Biz Assist에서 SMTP 설정을 만들면서
@Configuration과 @Bean을 사용했다.
@Configuration(proxyBeanMethods = false)
public class NotificationMailConfiguration {
}
Spring 설정을 모아두는 클래스라는 표시다.
이 안에서
Spring이 관리할 객체를 직접 등록할 수 있다.
메서드가 반환하는 객체를
Spring Bean으로 등록한다.
@Bean
JavaMailSender bizAssistJavaMailSender(
BizAssistMailProperties mailProperties
) {
return new JavaMailSenderImpl();
}
이렇게 등록한 객체는
다른 곳에서 주입받아 사용할 수 있다.
@Component
→ 클래스 자체를 Bean으로 등록
@Bean
→ 메서드가 만든 객체를 Bean으로 등록
직접 만든 클래스는 @Component 계열을 많이 쓰고
외부 라이브러리 객체처럼
생성 방법을 직접 정해야 할 때는 @Bean을 사용할 수 있다.
SMTP 객체는
host
port
인증
SSL
timeout
같은 설정을 넣어서 만들어야 했다.
그래서 생성 과정을
NotificationMailConfiguration에 모아두고
완성된 JavaMailSender만
필요한 곳에서 주입받아 사용했다.