728x90
@Component
특징
- 스캔 대상: @Component 어노테이션이 적용된 클래스는 Spring의 컴포넌트 스캔에 의해 자동으로 빈으로 등록됩니다.
- 기능: @Component는 특별한 기능 없이 단순히 빈으로 등록되는 클래스에 사용됩니다.
- 하위 어노테이션: @Component는 @Repository, @Service, @Controller와 같은 특정 목적을 가진 어노테이션들의 기본 어노테이션입니다.
사용 예제
import org.springframework.stereotype.Component;
@Component
public class MyComponent {
public void doSomething() {
System.out.println("Doing something in MyComponent");
}
}
@Configuration
특징
- 설정 클래스: @Configuration 어노테이션이 적용된 클래스는 Spring의 설정 클래스(configuration class)로 사용됩니다.
- 빈 정의: @Configuration 클래스는 @Bean 어노테이션을 사용하여 메서드 수준에서 빈을 정의할 수 있습니다.
- 프록시 설정: @Configuration 클래스는 프록시(proxy) 객체로 관리되어 메서드 호출 간의 싱글톤 보장이 됩니다.
사용 예제
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MyConfig {
@Bean
public MyComponent myComponent() {
return new MyComponent();
}
}
차이점
- 용도: @Component는 일반적으로 컴포넌트 스캔을 통해 빈으로 등록되는 클래스에 사용되며, @Configuration은 주로 설정 클래스에 사용됩니다.
- 빈 등록 방식: @Component는 클래스 자체를 빈으로 등록하지만, @Configuration은 @Bean 메서드를 통해 빈을 등록합니다.
- 싱글톤 보장: @Configuration 클래스는 내부적으로 프록시 객체를 사용하여 @Bean 메서드를 호출할 때마다 동일한 빈을 반환하도록 보장합니다.
'Spring Boot' 카테고리의 다른 글
[Spring Boot] 엔티티 관리와 영속성 컨텍스트: Spring Data JPA와 @Transactional (0) | 2024.07.15 |
---|---|
[Spring Boot] Spring Security @EnableMethodSecurity 설명 및 예제 (0) | 2024.07.10 |
[Spring Boot] BCrypt, SCrypt, Argon2 비밀번호 암호화 기법 (0) | 2024.07.09 |
[Spring Boot] JWT, JWS, JWE 개념 및 차이점 (0) | 2024.07.08 |
[Spring Boot] @Value와 @ConfigurationProperties 차이점 (0) | 2024.07.08 |