You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
두 어노테이션 모두 빈을 등록하기위한 어노테이션이다
@component : 개발자가 직접 작성한 class를 Bean으로 등록 할 수 있게 만들어 준다
@bean : 개발자가 직접 제어가 불가능한 외부 라이브러리를 빈으로 등록할 때 사용한다
@Bean + @Configuration
@bean : 개발자가 직접 제어가 불가능한 외부 라이브러리를 빈으로 등록할 때 사용한다
- 1개 이상의 @Bean을 제공하는 클래스의 경우 반드시 @Configuration을 명시해 주어야 함
예시를 통해 살펴보자
passwordEncoder와 같은 외부라이브러리를 사용한다고해보자
우리는 해당 라이브러리의 코드를 직접 수정할 수 없고 이러한것들을 빈으로 등록하여 사용하는경우가 많다.
이 때 우리는 @Bean 어노테이션을 통해 빈으로 등록하며 @Configuration 어노테이션을 통해
스프링에게 아래 클래스가 bean 팩토리를 위한 오브젝트 설정을 담당하는 class임을 알린다.
@Configuration
public class AppConfig {
@Bean
public ModelMapper modelMapper() {
ModelMapper modelMapper = new ModelMapper();
modelMapper.getConfiguration()
.setDestinationNameTokenizer(NameTokenizers.UNDERSCORE)
.setSourceNameTokenizer(NameTokenizers.UNDERSCORE);
return modelMapper;
}
@Bean
public PasswordEncoder passwordEncoder() {
return PasswordEncoderFactories.createDelegatingPasswordEncoder();
}
}