@Configuration
- 클래스에 붙이는 어노테이션
- @Bean을 사용할 때 함께 사용해 주어야 한다
@Bean
- 메소드에 붙이는 어노테이션
- 메소드에서 반환되는 객체를 스프링 빈에 등록한다
언제 @Service , @Repository 를 사용해야 할까
개발자가 직접 만든 클래스를 스프링 빈으로 등록하고 싶을 때
언제 @Configuration , @Bean 을 사용해야 할까
외부 라이브러리, 프레임워크에서 만든 클래스를 등록할 때
@Component
- 주어진 클래스를 '컴포넌트'로 간주한다
- 이 클래스들은 스프링 서버가 뜰 때 자동으로 감지된다.
- 서비스, 레포지토리 내부를 보면 상속된 인터페이스에 숨어있음 그래서 동작할 때 자동으로 등록
언제 사용?
컨트롤서, 서비스, 레포지토리가 아니고, 개발자가 직접 작성한 클래스를 스프링 빈으로 등록할 때 사용
스프링 주입 방법
1. 생성자를 통한 주입 방법 (가장 권장)
2. setter & @Autowired 사용 - 다른 사람이 setter 사용 가능하기 때문에 오작동의 우려
3. 필드에 직접 Autowired 사용 - 테스트 코드 사용 어려움
@Qualifier
여러 개의 후보군이 있을 때 하나의 특정 클래스를 가져오고 싶을 때 사용
양쪽 모두 사용할 때 Qualifier 끼리 사용
@Primary vs @Qualifier
사용하는 쪽이 직접 적어준 @Qualifier 를 가져옴
'JAVA&스프링' 카테고리의 다른 글
| [Spring] 스프링 컨테이너를 왜 사용할까? (DI , IoC) (0) | 2025.06.22 |
|---|---|
| JAVA JVM 힙 영역과 GC(Garbage Collector) (1) | 2025.06.13 |
| JAVA 스택 영역(Stack area) (0) | 2025.06.13 |
| JAVA JVM 런타임 데이터 영역 & 메소드 영역/데이터 영역(Method area) (0) | 2025.06.13 |
| JAVA 클래스 로더(Class loader) 및 로딩 과정 (1) | 2025.06.13 |