언녕하세요 정만입니다~
@Bean과 @Component가 빈을 등록할 때 사용하는걸 알았지만 정확한 차이를 몰라 이번 기회에 정리해보았습니다.

💡 스프링 빈은 스프링 IoC(제어의 역전) 컨테이너가 생성하고 관리하는 객체로 애플리케이션의 구성 요소를 의미합니다. 스프링 IoC 컨테이너는 빈의 생명주기와 의존성을 관리하고 필요할 때 빈을 주입합니다.
@Bean
- 주로 @Configurartion이 붙은 클래스내에서 사용합니다.
- 특정한 객체의 생성 로직이 필요할 때나 외부 라이브러리의 객체를 빈으로 등록할 때 사용합니다.
- 주로 외부 라이브러리나 복잡한 초기화가 필요한 객체에 사용됩니다.
- 메서드 레벨에서 수동으로 빈을 정의하고 등록합니다.
@Configuration
public class AppConfig {
@Bean
public ObjectMapper objectMapper() {
return new ObjectMapper();
}
}
@Component
- 클래스 레벨에서 직접 사용됩니다.
- 스프링은 이 클래스 경로를 스캔하면서 자동으로 빈을 등록합니다.스프링의 컴포넌트 스캔 기능을 통해 자동으로 빈을 등록하고 싶을 때 사용합니다.
- 일반적인 스프링 관리 객체에 사용됩니다.
- 클래스 레벨에서 자동으로 빈을 등록합니다.
@Component
public class EmailService {
public void sendEmail(String recipient, String message) {
...
}
}
정리
- @Bean과 @Component는 모두 스프링에서 빈을 등록하는 데 사용되지만 서로 다른 목적과 사용 방식을 가집니다.
- @Bean은 특정 로직에 따라 빈을 수동으로 등록할 때사용하고 @Component는 스프링이 클래스 경로를 스캔하여 자동으로 빈을 등록할 때 사용됩니다
'Spring' 카테고리의 다른 글
븟츠의 동시성 이슈 해결 방법 (0) | 2024.09.01 |
---|---|
Spring Security Architecture (Spring MVC 기반) (0) | 2024.08.25 |
기몽수의 FCM 웹 알림 서비스 (0) | 2024.08.17 |
[Spring Security] 다중 UserDetailsService 사용하기 (1) | 2024.08.04 |
[Security] Spring Security 이모저모 정리 (2) | 2024.07.28 |