728x90
반응형
@Component
싱글톤 클래스 빈을 생성하는 어노테이션이다. 물론 @Scope("Prototype") 어노테이션을 통해 싱글톤이 아닌 빈을 생성할 수 있다. 또한 @Service, @Repository 어노테이션 또한 이에 포함된다.
이 어노테이션은 선언적인 어노테이션이다. 즉, 패키지 스캔 안에 이 어노테이션은 " 이 클래스를 정의했으니 빈으로 등록해줘" 라는 뜻이 된다.
@Component
Java Bean에 등록하지 않아도 자동 주입이 가능하도록 해주는 어노테이션입니다. 개발자가 직접 개발한 클래스를 Bean에 등록할 경우 @Component 어노테이션을 사용하면 됩니다.
@Bean
주로 @Configuration 어노테이션이 들어간 Spring을 설정하는 클래스 내에 들어가는 메소드에서 선언한다. 만약 이를 @Component로 따지면, 스프링은 스캔할 패키지를 검색해서 @Component 어노테이션을 발견하면 이렇게 등록하는 꼴이 된다.
@Component
public class MyBean {
// ...
}
// 스프링 내부 처리를 이해하기 쉽게 표현하면?
@Bean
public MyBean myBean() {
return new MyBean();
}
물론 생성자에 인자기 있다면 그 빈이 있는지 확인 후 넣는다. 물론 없으면 스프링은 오류를 뱉으며 앱을 끝내버린다.
정리
일반적인 당신의 빈 등록은 간편하게 @Component 어노테이션으로, 유연한 빈 등록이 필요하다면 @Configuration 어노테이션이 들어간 클래스 내 @Bean 어노테이션 메소드 선언으로!
아, Spring Boot의 경우 @SpringBootApplication 어노테이션이 들어간 스프링 실행부에서도 @Bean 어노테이션이 깃든 메소드 등록이 가능하다는 것도 잊지 말자.
728x90
반응형
'Study > Spring' 카테고리의 다른 글
Spring JPA ) No property desc/asc found for type Error (0) | 2022.05.09 |
---|---|
[Spring] @Valid와 @Validated를 이용한 유효성 검증의 동작 원리 및 사용법 예시 (0) | 2022.05.09 |
RequestBody, ModelAttribute, RequestParam이란? (0) | 2021.11.04 |
[Spring] 프레임워크 시작 (0) | 2021.11.04 |
[Spring] 프레임워크의 구성요소, 동작원리 (0) | 2021.11.03 |
댓글