정의
Congifuration은 설정을 만들거나, 내부에 @Bean을 만들기 위해 클래스에 적용시키는 어노테이션이다.
클래스에 Configuration 어노테이션을 등록하면 해당 클래스를 설정에 대해 사용해줄 수 있고, @Bean을 통해 SpringBean을 등록할 수 있다.
특징
@Configuration을 통해 해당 클래스가 설정에 대한 파일임을 알 수 있다.
내부의 메서드(Bean으로 호출된)을 가져올 경우, 클래스를 호출해 내부의 메서드를 호출하는 방식이 아닌, 메서드만을 호출하는 방식이다.
또한, 내부에 @Bean을 통해 Spring Bean을 등록할 것임을 알 수 있다.
주의점 : @Configuration은 Bean을 등록하기 위한 어노테이션이라는 것은 아니다.
방식
public class AppConfig {
@Bean
public void printStateA(){
System.out.println("AppConfig.A");
}
@Bean
public void printStateB(){
printStateA();
System.out.println("AppConfig.B");
}
}
위의 코드에서,
public void printBeans(){
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
System.out.println(context.getBean(AppConfig.class));
}
이런 방식으로 3개의 Bean이 확인된다.
@Configuration
public class AppConfig {
@Bean
public void printStateA(){
System.out.println("AppConfig.A");
}
@Bean
public void printStateB(){
printStateA();
System.out.println("AppConfig.B");
}
}
여기처럼 @Configuration을 달아주면,
여기처럼 결국 쓰이는 최종 Bean A, B만 불러지게 된다.
@Congifuration을 통한 두 가지 장점이 존재한다.
- 싱글톤 : Bean만 존재했을 때, 스프링 빈으로 호출은 되지만, 싱글톤으로 유지되지는 않는다(즉, 중복적으로 호출이 생긴다)
이를 @Configuration을 통해 싱글톤으로 유지시킬 수 있다. - 클래스 호출 : Bean만 존재했을 때, 결국 Bean을 호출하기 위한 클래스를 한번 호출하고, 해당 클래스에서 Bean들을 뽑아와 사용한다. 하지만, @Configuration을 통해 해당 클래스를 호출하는 과정을 줄일 수 있다.
'스프링 공부 > 어노테이션 정리' 카테고리의 다른 글
@EventListner (0) | 2024.02.02 |
---|---|
@뭐시깽이Constructor (0) | 2023.01.02 |
@JsonInclude (0) | 2023.01.02 |
@Log(@Slf4j를 써보다가 궁금해서 찾아본 내용 정리) (3) | 2023.01.01 |
@Bean (0) | 2022.12.28 |