기존의 Spring MVC에서는 xml을 활용하여 Bean을 등록하였는데, 프로젝트 규모가 커짐에 따라 xml으로 빈을 관리하는 것이 상당히 번거로워져서 어노테이션을 활용하여 Bean을 등록하게 된다. 이번 장에서는 빈을 등록하는 어노테이션 @Bean, @Configuration, @Component의 차이점을 알아 보고자 한다.
이 두 어노테이션은 세트로 함께 사용해 줘야한다.
@Bean 어노테이션만 주어도 스프링 컨테이너에 빈으로 등록은 가능하다. 하지만 싱글톤을 보장 받지 못한다.
다음 예시를 보자.
@Configuration
public class SecurityJavaconfing extends WebSecurityConfigurerAdapter {
@Bean
public PasswordEncoder passwordEncoder(){
return new BCryptPasswordEncoder();
}
@Bean
public JwtUtil jwtUtil() {
return new JwtUtil(secret);
}
위와 같이 @Bean을 사용하는 클래스에는 반드시 @Configuration 어노테이션을 활용하여 해당 클래스에서 Bean을 등록하고자 함을 명시해줘야 한다.
아래 코드는 @Component 어노테이션을 이용해서 빈을 등록하는 방식이다.
@Component
public class LoginUserAuditorAware implements AuditorAware<String> {
``
}