https://sundaland.tistory.com/474
스프링은 어노테이션 기반 구성에 대한 포괄적인 지원을 제공하며, 어노테이션을 클래스, 메서드 또는 필드 선언에 사용하여 컴포넌트 클래스 자체의 메타데이터로 작동한다. 예를 들어, 스프링은 BeanPostProcessor를 어노테이션과 함께 사용하여 핵심 IoC 컨테이너가 특정 어노테이션을 인식할 수 있도록 한다.
예를 들어, @Autowired 어노테이션은 Autowiring Collaboratros에서 설명된 것과 동일한 기능을 제공하지만, 더 세밀한 제어와 더 넓은 적용 범위를 가진다. 또한 스프링은 @PostConstruct와 @PreDestory와 같은 JSR-250 어노테이션에 대한 지원뿐만이 아니라, jakarta.inject 패키지에 포함된 JSR-330 (자바용 의존성 주입) 어노테이션 (@Inject, @Named) 에 대한 지원도 제공한다.
어노테이션 기반 주입은 외부 속성 주입보다 먼저 수행된다. 따라서 외부 구성 (XML로 지정된 빈 속성)이 혼합 접근 방식을 통해 연결될 때, 속성에 대한 어노테이션을 효과적으로 덮어 쓴다.
기술적으로, post-processor를 개별 빈 정의로 등록할 수 있지만, 이미 AnnotationConfigApplicationContext에서 암묵적으로 등록되어 있다.
XML 기반 스프링 설정에서 어노테이션 기반 구성과 혼합하여 사용할 수 있도록 하려면 아래와 같은 설정 태그를 포함할 수 있다.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
<context:annotation-config/>
</beans>
<context:annotation-config/> 엘리먼트는 다음과 같은 post-processor를 암묵적으로 등록한다.
- ConfigurationClassPostProcessor
- AutowiredAnnotationBeanPostProcessor
- CommonAnnotationBeanPostProcessor
- PersistenceAnnotationBeanPostProcessor
- EventListenerMethodProcessor
<context:annotation-config/>엘리먼트는 정의된 동일한 애플리케이션 켄텍스트 내에서만 빈에 대한 어노테이션을 찾는다. 이는 만약 DispatcherServlet의 WebApplicationContext에 <context:annotation-config/> 를 넣으면, 컨트롤러 내의 @Autowired 빈만 확인하고 서비스는 확인하지 않는다는 것을 의미한다.
'스프링 프레임워크 > IoC (Inversion of Control)' 카테고리의 다른 글
Using the @Configuration annotation (0) | 2024.11.19 |
---|---|
Using the @Bean Annotation (0) | 2024.11.19 |
Instantiating the Spring Container by Using AnnotationConfigApplicationContext (0) | 2024.11.19 |
Fine-tuning Annotation-based Autowiring with Qualifiers (0) | 2024.11.19 |
Bean Scopes (0) | 2024.11.18 |