[Spring] @Configuration, @Component
1. @Configuration 애너테이션
➡️ 설정 파일을 만들기 위한, 스프링 컨테이너에 Bean을 등록하기 위한 애너테이션
➡️ 스프링 컨테이너는 @Configuration이 붙어있는 클래스를 자동으로 빈으로 등록한다.
자세하게 빈이 등록되는 과정
: @Configuration이 붙은 클래스를 자동으로 빈으로 등록해 두고, 해당 클래스에서 @Bean이 붙은 메서드를 검색한 후 해당 메서드에서 리턴하는 객체를 Spring Bean으로 추가해 준다.
@Configuration
public class SampleConfig {
@Bean
public SampleResource sampleResource() {
return new SampleResource();
}
}
⭐️ 위 Sample 코드와 같이 @Bean을 사용하는 클래스에는 반드시 @Configuration 애너테이션을 활용하여 해당 클래스에서 Bean을 등록하고자 함을 명시해주어야 한다.⭐️
➡️ 스프링 빈으로 등록된 다른 클래스 안에서 @Bean으로 직접 빈을 등록해주는 것도 가능하긴 하지만 "싱글톤을 보장받을 수 없다."
그렇기 때문에 @Bean 애너테이션은 @Configuration과 함께 사용해주어야 한다.
2. @Component 애너테이션
➡️ 수동으로 빈을 등록하는 것은 빈으로 등록하는 클래스가 많아질수록 많은 시간이 걸릴 것이고 생산력 저하의 원인이 될 수 있다. 그래서 스프링에서는 특정 애너테이션이 있는 클래스를 찾아 빈으로 등록해주는 Component Scan 기능을 제공한다. 그리고 이 기능을 사용하여 @Component 애너테이션이 있는 클래스들을 찾아 자동으로 빈 등록을 해준다.
➡️ @Component를 가지는 애너테이션으로는 @Controller, @Service, @Repository, @Configuration 등이 있다.
→ @Configuration 안에 있는 @Component에 의해 설정 클래스가 자동으로 빈으로 등록이 되고 @Bean 메서드 통해 빈을 등록했다
✔️ 스프링에서는 기본적으로 컴포넌트 스캔을 이용한 자동 빈 등록 방식을 권장하고 있다.
'Spring > 기본' 카테고리의 다른 글
[Spring] 싱글톤 컨테이너 (1) | 2023.06.11 |
---|---|
[Spring] 스프링 컨테이너와 빈 (0) | 2023.06.11 |
[Spring] AppConfigurer 클래스의 역할 (0) | 2023.06.11 |
[Spring] 스프링 프레임워크 주요 모듈 알아보기 (0) | 2023.05.31 |