[Spring] @Bean @Component

지인·2023년 6월 27일
0

Spring

목록 보기
14/20

🐰 @Configuration

  • 클래스에 적용되며, 해당 클래스를 Spring의 설정 파일로 지정한다.

    • 개발자가 작성한 설정 클래스에서 Configuration 어노테이션을 적용하여 Spring에게 해당 클래스가 설정 파일임을 알린다.
  • 설정 파일은 Bean 어노테이션이 적용된 메서드를 포함하고, 빈의 생성과 관리, 의존성 주입 등을 정의한다.

  • Spring 컨테이너에 의해 스캔되어 설정 정보로 사용된다.



🐰 @Bean @Component

@Bean @Component 둘다 Spring(IOC) Container에 Bean을 등록하도록 하는 메타데이터를 기입하는 어노테이션이다.

@Bean

  • 메소드에 적용되며, 해당 메서드가 반환하는 객체를 Spring의 Bean으로 등록한다.

    • 개발자가 직접 객체를 생성하고 빈으로 등록할 수 있다.
    • 메서드의 리턴 타입이 빈의 타입이 된다.
  • Bean 어노테이션이 적용된 메서드는 @Configuration 어노테이션이 적용된 클래스에 위치해야 한다.

  • String 컨테이너는 설정 파일에서 @Configuration 어노테이션이 적용된 클래스를 스캔하고, 빈으로 적용된 메서드를 호출하여 해당 객체를 생성하고 빈으로 등록한다.



@Component

  • 클래스에 적용되며, 해당 클래스는 Spring 컴포넌트로 등록한다.

    • 개발자가 직접 작성한 클래스를 빈으로 등록할 수 있다.
    • 주로 개발자가 작성한 커스텀 클래스에 Component 어노테이션을 적용하여 Spring의 관리 대상으로 만든다.
  • 어노테이션이 적용된 클래스는 Spring 컨테이너에서 인스턴스화 되어 관리된다.

  • Component 어노테이션을 확장한 @Controller @Service @Repository 등이 있으며, 각각 특정 계층에서 사용된다.


차이점

  • @Bean은 개발자가 직접 객체를 생성하고 빈으로 등록하는 메서드에 적용되는 반면, @Component는 클래스를 빈으로 등록한다.

  • @Bean은 메서드 단위로 빈을 정의하는 반면, @Component는 클래스 단위로 빈을 정의한다.

  • @Bean은 @Configuration 어노테이션이 적용된 설정 파일에 위치해야 하지만, @Component는 개별 클래스에 적용된다.

  • @Bean은 리턴 타입이 빈의 타입이 되지만, @Component는 클래스 자체가 빈으로 등록된다.


🐰 정리

  • @Bean : 개발자가 객체의 생성과 설정에 관여하고자 할 때 사용된다.

  • @Component : Spring에 의해 관리되는 컴포넌트로 사용된다.

  • @Configuration : 설정 파일을 정의하여 빈의 생성과 관리, 의존성 주입 등을 설정한다.


참고

진짜 개발자

profile
열쩡

0개의 댓글