본문 바로가기

Dev/Spring

Bean & Component

@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