@Bean
@Bean 어노테이션을 사용해 수동으로 빈을 등록할 수도 있다.
- 개발자가 직접 제어가 불가능한 라이브러리를 활용할 때
- 애플리케이션 전범위적으로 사용되는 클래스를 등록할 때
- 다형성을 활용하여 여러 구현체를 등록해주어야 할 때
@Bean을 이용한 수동 빈 메서드는 스프링 빈 안에만 구현되어 있다면 모두 동작한다.
@Configuration
@Cobnfiguration 어노테이션 내부에는 @Component 어노테이션이 붙어 있어 @Configuration이 붙어 있는 클래스도 스프링 빈으로 등록된다.
@Configuration을 따로 만든 이유는 CGLIB로 프록시 패턴을 적용해 수동으로 등록하는 스프링 빈이 반드시 싱글톤으로 생성됨을 보장하기 위해서이다.
즉 @Bean 메서드를 여러번 호출하여도 동일한 객체를 반환하여 싱글톤을 보장한다.
만약 @Configuration 없이 @Bean만 선언하면 매 호출시마다 빈이 생성되므로, 싱글톤을 보장하지 못한다.
StereoType
소프트웨어 개발에서 특정 클래스나 구성 요소에 대한 역할 및 의미를 부여하는 어노테이션이나 마크업을 말한다.
코드에 메타 데이터를 제공하여 해당 클래스 또는 컴포넌트가 어떤 역할을 하고 어떻게 동작해야 하는지 정의한다.
스프링에서는 스프링 컨테이너가 스프링 관리 컴포넌트로 식별하게 해주는 마커이다.
@Controller, @Component, @Service 등이 있다.
'Back-end' 카테고리의 다른 글
JPA (0) | 2023.09.20 |
---|---|
Spring MVC (0) | 2023.09.15 |
불변성 (0) | 2023.09.08 |
Spring DI 방식 (0) | 2023.09.08 |
JDK 동적 프록시, CGLIB (0) | 2023.09.08 |