[스프링부트] @Component, @Bean, @Configuration 정리

Harry park·2022년 6월 8일
0

SpringBoot

목록 보기
11/11

📍 Component Annotation

  • @Component는 스프링 컨테이너가 자동적으로 사용자가 작성한 bean을 찾고 등록하는 어노테이션이다.
  • @Component는 Class에 붙어서 Class Level으로 Custom Bean을 만들어 준다.
  • 쉽게 말해서, 해당 클래스를 스프링 컨테이너가 인스턴스(Instace)를 생성하고 Bean으로 등록하여 자원을 관리하라는 어노테이션이다.

📎 Component StereoType Annotation

📖 StereoType Annotation은 모두 Component로써 동일한 기능을 제공한다.
(컴포넌트로써 동일한 기능을 제공하는 것인지 어노테이션이 동일한 목적의 기능을 제공하는 것 아님)

  • @Controller
  • @Service
  • @Repository

📎 ComponentScan Annotation

📖 @ComponentScan은 스프링이 자동적으로 ApplicationContext를 취합해주는(gather) 어노테이션이다.
📖 SpringBoot 에서는 @SpringBootApplication@ComponentScan이 포함되어 있어
     기본으로 모든 @Component를 스캔한다.

🎈cf) 하지만 어플리케이션 내에서는 외부 자원(external lib 등)이 필요로 하기 때문에
     @SpringBootApplication을 기본으로만은 할 수 없다.
classpath내에 존재해야만 스프링 컨테이너가 설정(configure)할 수 있다.
     (as long as it exists on the classpath.)
@Component은 외부 자원이나, a third-party source 또는 @Component를 더 할 수 없는 경우에는 소스 코드에 접근을 할 수 없는데 이때 사용 가능한 것이@Bean이다.

📍 Bean Annotation

  • @Bean@Component와 마찬가지로 스프링이 Bean을 취합하기(런타임시) 위한 어노테이션이다.

  • Bean의 인스턴스 코드와 클래스의 정의가 분리된 구조이기 때문에 외부 자원이나 a third-party source도 Bean으로 등록할 수 있게 해준다.

  • 🎈 @BeanClass-level에 사용 할 수 없으며, Method 단위로 선언되어야 한다.

  • 🎈 @Bean을 사용하는 클래스에는 반드시 @Configuration이 선언되어야 한다.(스프링 컨테이너에 Bean 을 등록하고자 함을 명시해주어야 한다.)


📖 참고 사이트

profile
Jr. Backend Engineer

0개의 댓글