프로그래밍/Spring

[Spring] 스프링에서 @component @service @bean의 차이

테타니 2023. 2. 22. 15:40

객체를 생성하는 방법을 정의합니다. 하지만 세 개의 어노테이션은 서로 다른 용도와 제약 조건을 가지고 있습니다.

@Component

  • @Component는 스프링에서 관리되는 모든 빈 객체에 대한 범용적인 어노테이션입니다.
  • @Component 어노테이션이 붙은 클래스는 스프링 컨테이너에 빈으로 등록됩니다.
  • @Component 어노테이션은 다른 특수한 어노테이션인 @Service, @Repository, @Controller 등을 대신하여 사용될 수 있습니다.

@Service

  • @Service는 @Component와 비슷한 역할을 수행하지만, 비즈니스 로직을 처리하는 서비스 계층에 대한 어노테이션입니다.
  • @Service 어노테이션이 붙은 클래스는 스프링 컨테이너에 빈으로 등록됩니다.
  • @Service 어노테이션은 @Transactional과 함께 사용하여 트랜잭션을 관리하는 데 도움을 줄 수 있습니다.

@Bean

  • @Bean은 직접 제어할 수 없는 외부 라이브러리나 설정을 스프링 빈으로 등록할 때 사용합니다.
  • @Bean 어노테이션이 붙은 메소드는 스프링 컨테이너에 빈으로 등록됩니다.
  • @Bean 어노테이션을 사용할 때에는 메소드 이름이 빈의 이름이 됩니다.

즉, @Component와 @Service는 스프링에서 관리되는 일반적인 빈을 생성할 때 사용되며, @Bean은 외부에서 가져온 객체를 스프링 빈으로 등록할 때 사용됩니다. 세 가지 어노테이션 모두 스프링 컨테이너에 빈으로 등록되어 의존성 주입 및 관리가 가능합니다

 

출처 : GPT