spring

Spring Framework에서 @Bean과 @Component의 차이점 이해하기

개발만파볼까 2023. 7. 7. 01:05
728x90
반응형
SMALL

Spring Framework에서 자주 사용하는 두 개념인 '@Bean'과 '@Component'에 대해 알아보려고 합니다. 두 애너테이션이 모두 Spring 컨테이너가 관리하는 빈을 정의하는 데 사용되지만, 그 사용 방식과 목적이 조금 다릅니다.

@Component '@Component'는 클래스 레벨에서 사용되며, 이 애너테이션을 사용하면 해당 클래스가 Spring Bean으로 자동으로 등록됩니다. '@Component'가 붙은 클래스는 Spring의 component-scanning 메커니즘에 의해 자동으로 인식되어 Bean이 됩니다. 이러한 방식은 코드를 간결하게 하고, 의존성 주입을 쉽게 할 수 있도록 도와줍니다.

@Component
public class MyComponent {
  //...
}

위와 같이 사용하면 'MyComponent' 클래스는 Spring Bean으로 자동 등록되며, 어디에서든지 Autowiring을 통해 사용할 수 있습니다.

 

@Bean '@Bean' 애너테이션은 메소드 레벨에서 사용되며, 개발자가 컨트롤이 필요한 빈을 수동으로 등록할 때 사용합니다. '@Bean'이 붙은 메소드는 Spring Configuration(@Configuration이 붙은 클래스)에서 호출되어 그 결과가 Spring Container에 의해 관리되는 Bean이 됩니다.

 

예를 들어,

@Configuration
public class MyConfiguration {
    @Bean
    public MyBean myBean() {
        return new MyBean();
    }
}

위와 같이 사용하면 'myBean()' 메소드에서 반환된 객체가 Spring Bean으로 등록됩니다.

 

또한 '@Bean' 애너테이션을 사용하면, Bean의 초기화와 소멸 시점을 커스텀하게 관리하거나, Bean이 생성될 때 추가적인 설정이나 초기화 작업을 수행할 수 있습니다.

결론적으로, '@Component'와 '@Bean' 모두 Spring Bean을 생성하고 등록하는 데 사용되지만, '@Component'는 클래스 레벨에서 자동 등록을, '@Bean'은 메소드 레벨에서 수동 등록을 통해 더 세밀한 컨트롤이 가능하다는 차이점이 있습니다. 어떤 애너테이션을 사용할지는 개발 상황과 요구 사항에 따라 달라집니다.

이렇게 '@Bean'과 '@Component'의 차이점을 이해하면, Spring Framework를 사용하여 애플리케이션을 구축할 때 더 효과적으로 빈을 관리하고 사용할 수 있습니다.

728x90
반응형
LIST