@Bean은 이름에서도 직관적으로 알 수 있듯이 Bean을 등록하는 어노테이션이다.
쓰임새는 @Component와 매우 유사하지만 결정적인 차이점이 있다.
@Component의 경우에는 사용자가 만들 클래스를 Bean으로 등록하기 위해 사용한다.
@Bean은 이미 만들어진 라이브러리를 통해 생성한 객체들을 Bean으로 등록한다.
만들어진 라이브러리는 사용자가 직접 컨트롤 할 수 없는 객체들을 말한다.
그 예로는 BCryptPasswordEncoder, ArrayList<> 등을 말한다.
확실히 가져다 쓰긴하지만 내가 만든 것들은 아니다.
@Bean을 사용하기 위해서는 @Configuration 으로 지정된 클래스 내에서 사용이 가능하다.
물론 @Bean만 사용하여도 Bean 등록은 가능하지만 Bean이 싱글턴임을 보장할 수가 없다.
그러므로 @Bean을 사용한다면 @Configuration을 꼭 붙여서 사용하자.
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class BeanTest {
@Bean
public Map<String, String> beanTestMap(){
return new HashMap<String, String>();
}
}
beanTestMap() 에 @Bean을 붙여보니 Servlet-context.xml 의 Beans Graph에 나오는 것을 확인할 수 있다.

@Component(id = "XXXX") 처럼 @Bean 또한 id를 지정할 수 있다.
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class BeanTest {
@Bean(name="nameBeanTest")
public Map<String, String> beanTestMap(){
return new HashMap<String, String>();
}
}


@Configuration과 @Bean을 이용한 Spring Framework 환경 설정의 Java 코드화..
흔히들 Spring Framework(이하 Spring)를 사용하면서 가장 많이 사용하는 환경설정 방법이 아마 XML일것으로 생각한다. 그나마 2.5때는 Spring에서 사용되는 모든 Bean을 전부 XML에 등록하는 식으로 개발 가이드..
zgundam.tistory.com
'SPRING FRAMEWORK > ANNOTATION' 카테고리의 다른 글
Lombok 어노테이션 정리 (0) | 2022.08.29 |
---|---|
@RequestMapping (0) | 2022.08.29 |
@Controller (0) | 2022.08.29 |
@Component (0) | 2022.08.29 |
Annotation / Meta-Data (0) | 2022.08.28 |