[ 최종 수정일 : 2023년 10월 08일 ]

 

 

 

 

@Bean Annotation


 스프링에서는 @Configuration를 빈 객체를 관리하는 클래스 레벨에 붙이고, @Bean을 통해 명시적으로 지정된 메서드 레벨의 빈 객체를 생성하도록 합니다. 

@Configuration
public class AppConfig {
    
    @Bean
    public Mybean myBean() {
        return new MyBean();
    } // myBean
    
} // end class

 

하지만 @Bean은 매번 사용자가 명시적으로 붙여줘야 하는 수고로움이 발생하며 이를 좀 더 간소화하기 위해 

@Component라는 어노테이션을 사용하게 되었습니다.

 

 

 

@Componenet Annotation ( + Controller, Service, Repository )


@Component @ComponentScan과 함께 사용되며 클래스를 스프링 빈으로 자동 등록하도록 지정합니다.

클래스 레벨에 @Componenet를 붙이게 되면 클래스는 스프링의 컴포넌트 스캔을 통해 스프링 컨테이너의 빈으로 자동 등록됩니다.

단, 지정된 클래스 내의 메서드를 빈으로 오토 와이어링하려면 @Autowried 어노테이션을 사용해야 합니다.

@Component
public class MyComponent {
    
    @Autowired
    public String MyBean myBean() {
        return new MyBean();
    } // myBean
    
} // end class

 

@Componenet@Controller, @Service, @Repository과 같은 스테레오 타입의 메타 어노테이션으로 등록되어 있습니다.

여기서 스테레오 타입(stereotype)이란 각 레이어(Layer)에 해당하는 컴포넌트를 정의할 때 사용하는 것을 의미합니다.

 

 

 

부제 - @Bean ( +Configuration ) VS @Component (+ Autowired ) ?


사용자의 성향과 개발 환경에 따라 다르겠지만,

@Bean은 일반적으로 빈의 생성과 초기화 과정을 세밀하게 조정하거나 외부 라이브러리들을 빈으로 등록할 때 사용합니다.

@Component@ComponentScan함께 빈을 간단히 등록하고자 할때 사용되며, 스테레오 타입의 메타 어노테이션으로 등록되어 있습니다.

 

 

'Spring boot > Spring boot' 카테고리의 다른 글

Spring MVC Structure  (0) 2023.10.05
Dependency Injection(의존성 주입)  (0) 2023.09.28
스프링 부트 기본 환경 설정  (0) 2023.09.27
스프링 부트와 컨테이너리스  (0) 2023.09.24

+ Recent posts