@Bean 어노테이션은 스프링 빈을 정의하는 메서드에 적용된다.
해당 메서드가 반환하는 객체를 스프링 컨테이너에서 빈으로 등록한다.
주로 @Configuration 어노테이션이 붙은 클래스 내에서 사용된다.
@Configuration
public class MyConfig {
@Bean
public MyBean myBean() {
return new MyBean();
}
}
public class MyBean {
// 필드, 메서드, 생성자 등
}
여기서 @Bean 어노테이션이 붙은 myBean()메서드를 실행하면 MyBean이라는 객체가 생성되는데, 이 객체가 스프링 빈으로 등록되는 것이다.
보통 @Bean 어노테이션이 붙은 메서드의 이름 -> 빈의 이름으로 사용
@Bean(name="") -> 빈의 이름 지정 가능
기본적으로 스프링 빈은 싱글톤(singleton)
싱글톤
스프링 컨테이너에서 하나의 인스턴스만 생성되고 공유됨
@Scope("") 어노테이션을 활용하여 변경도 가능하다.
(singleton, prototype, request, session, application)
@Bean 메서드는 다른 빈을 주입받을 수 있으며, 이를 통해 빈 사이에 관계를 설정할 수 있다.