Spring Framework/Spring IoC(44)
-
Registering a LoadTimeWeaver
LoadTimeWeaver는 Spring에서 클래스가 Java 가상 머신(JVM)에 로드될 때 동적으로 변환하는 데 사용됩니다.로드 타임 위빙을 활성화하려면, 다음 예제와 같이 @Configuration 클래스 중 하나에 @EnableLoadTimeWeaving을 추가할 수 있습니다: @Configuration@EnableLoadTimeWeavingpublic class AppConfig {} 또한, XML 설정에서는 context:load-time-weaver 요소를 사용할 수 있습니다: ApplicationContext에 로드 타임 위버가 구성되면, 해당 ApplicationContext 내의 모든 빈은 LoadTimeWeaverAware를 구현하여 로드 타임 위버 인스턴스에 대한 참조를 받을 수 ..
2024.11.15 -
Environment Abstraction
Environment 인터페이스란 무엇인가요?Environment 인터페이스는 애플리케이션의 환경(Environment) 설정을 담당하는 핵심적인 추상화입니다. 이는 애플리케이션 환경의 두 가지 주요 측면인 Profile (프로파일)과 Property (속성)를 하나의 컨테이너에 통합하여 모델링합니다.1. Profile (프로파일)프로파일은 특정 환경에서만 활성화하여 사용하려는 Bean들의 논리적인 그룹입니다.역할: 개발, 테스트, 운영 등 환경별로 등록할 빈(Bean)을 다르게 설정하고 싶을 때 사용합니다.작동 방식: 빈(XML로 정의되든, @Annotation으로 정의되든)은 특정 프로파일에 할당될 수 있습니다. 해당 프로파일이 활성(Active) 상태일 때만, 그 빈들이 애플리케이션 컨테이너에 등..
2024.11.14 -
Using @PostConstruct and @PreDestory
♻️ Spring 빈 생명주기 제어: @PostConstruct와 @PreDestroy 활용하기Spring Framework에서 Bean의 Lifecycle 를 관리하는 것은 매우 중요합니다. 특정 빈이 초기화된 직후에 필요한 작업을 수행하거나, 소멸되기 직전에 리소스를 정리하는 등의 작업을 수행해야 할 때가 많습니다.Spring은 JSR-250 표준 어노테이션인 @PostConstruct 와 @PreDestroy 를 사용하여 이 생명주기 콜백(Callback)을 손쉽게 제어할 수 있도록 지원합니다. 1. @PostConstruct와 @PreDestroy의 역할이 두 어노테이션은 Spring이 제공하는 InitializingBean 인터페이스나 XML에서 init-method, destroy-method..
2024.11.14 -
Using @Value
💰 @Value: 설정 값 주입부터 SpEL 활용까지 Spring Framework의 @Value 어노테이션은 외부 설정 파일(Properties, YAML 등), 시스템 프로퍼티, 환경 변수 등 외부화된 값을 Spring Bean의 필드, 생성자 아규먼트 또는 메서드에 주입하는 데 사용되는 핵심 도구입니다.@Value는 단순한 문자열 주입을 넘어 타입 변환, 디폴트값 설정, 그리고 강력한 SpEL(Spring Expression Language) 기능을 제공하여, 애플리케이션 설정을 유연하고 동적으로 만듭니다.1. 기본 사용법: 외부 설정 값 주입@Value의 가장 일반적인 용도는 application.properties나 환경(Environment) 변수 같은 외부 소스의 값을 플레이스홀더(${....
2024.11.14 -
Injection with @Resource
🏷️ JSR-250 @Resource를 활용한 이름 기반 의존성 주입Spring Framework는 JSR-250 표준의 @Resource 어노테이션(jakarta.annotation.Resource)을 사용하여 의존성 주입을 지원합니다. 이 방식은 Jakarta EE(이전 Java EE) 환경, 특히 JSF-managed beans나 JAX-WS 엔드포인트 등에서 흔히 볼 수 있는 패턴으로, Spring 관리 객체에서도 동일하게 적용 가능합니다.@Resource는 @Autowired와는 달리 이름(by-name) 기반 주입을 기본 전략으로 삼아 명시적인 제어를 제공하는 것이 특징입니다. 1. @Resource의 디폴트 작동 방식: 이름 매칭@Resource를 사용할 때, Spring은 디폴트로 어노테..
2024.11.14 -
Using CustomAutowireConfigure
⚙️ 커스텀 Qualifier의 경계를 확장하다: CustomAutowireConfigurer 활용법앞선 글에서 @Qualifier 어노테이션을 사용하여 커스텀 DI 필터링 기능을 구현하는 방법을 알아보았습니다. 하지만 때로는 이미 정의된 기존의 커스텀 어노테이션을 Spring의 DI 메커니즘에 통합하고 싶을 수 있습니다.이때, Spring의 핵심 확장 지점인 CustomAutowireConfigurer를 사용하면, @Qualifier가 붙어있지 않은 외부 어노테이션도 Qualifier처럼 사용할 수 있도록 Spring 컨테이너에 등록할 수 있습니다. 1. CustomAutowireConfigurer의 역할CustomAutowireConfigurer는 Spring의 BeanFactoryPostProces..
2024.11.14