@Component
싱글톤 클래스 빈을 생성하는 어노테이션
물론 @Scope(“Prototype”) 통해 싱글톤이 아닌 빈을 생성 가능
@Service, @Repository 도 이에 해당됨
이 어노테이션은 선언적(Declarative)인 어노테이션.
즉, 패키지 스캔 안에 이 어노테이션은 “이 클래스를 정의했으니 빈으로 등록해줘” 라는 의미
@Bean
@Configuration 어노테이션이 들어간 Spring을 설정하는 클래스 내에 들어가는 메소드에서 선언.
만약 이를 @Component로 따지면, 스프링은 스캔할 패키지를 검색해서 @Component 어노테이션을 발견하면 아래와 같이 등록하는 것처럼 됨.
@Component
public class MyBean {
// ...
}
// 스프링 내부 처리를 이해하기 쉽게 표현하면?
@Bean
public MyBean myBean() {
return new MyBean();
}
물론 생성자에 인자가 있다면 그 빈이 있는지 확인후 넣음.
물론 없으면 스프링은 오류를 뱉으면 앱 종료.
정리
일반적인 빈 등록은 간편하게 @Component 어노테이션으로,
유연한 빈 등록이 필요하다면 @Configuration 어노테이션이 들어간 클래스 내 @Bean 어노테이션 메소드 선언으로
그전에, Spring Boot의 경우 @SpringBootApplication 어노테이션이 들어간 스프링 실행부에서도 @Bean 어노테이션이 깃든 메소드 등록이 가능하다는 것도 잊어선 안됨.
출처 :
'Dev > Spring' 카테고리의 다른 글
Fetch Type (0) | 2021.09.28 |
---|---|
JPA CascadeType (0) | 2021.09.27 |
Spring Cloud Gateway (0) | 2021.09.24 |
Spring Security (0) | 2021.09.24 |
Spring Batch - JobParameter & Scope (0) | 2021.09.24 |