□ Bean 수동 등록
- @Component를 사용하면 자동으로 해당 클래스를 Bean으로 등록해줌
- 기술적인 문제나 공통적인 관심사를 처리할 때 사용하는 객체들을 수동으로 등록
- 공통 로그처리와 같은 비즈니스 로직을 지원하기 위한 부가적이고 공통적인 기능들을 '기술지원 Bean'이라 부르고 수동등록 함
- 수동 등록된 Bean에서 문제가 발생 했을 때 해당 위치를 파악하기 쉬운 장점이있음
@Configuration
public class PasswordConfig {
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}
- Bean으로 등록하고자 하는 객체를 반환하는 메서드를 선언
- 그 매서드 위에 @Bean 애노테이션 추가
- 해당 메서드가 속해있는 클래스에다가 @Configuration 애노테이션 추가
□ 같은 타입의 Bean이 2개일 때
※ @Autowired는 Type으로 우선 스캔하고 그다음 Bean의 이름으로 스캔한다.
Food라는 interface가 존재하고
Food를 implements하는 Chicken과 Pizza클래스가 존재할 때
다음과 같이 하나 이상의 Food type이 있다는 오류가 발생한다 세가지 방법으로 해결 할 수 있다.
- 정확하게 해당하는 구현체를 명시해준다(Bean의 이름으로)
- Bean 객체에 @Primary를 설정한다. 같은 타입이 있더라도 @Primary가 우선적으로 주입된다.
- @Qualifier("명칭")을 통해서 명시하여 주입할 수 있다.
※ Qualifier과 Primary중 Qualifier이 더 우선적이다.
'Java & Spring > Spring' 카테고리의 다른 글
31일차 - Spring강의(Entity 연관 관계) (0) | 2024.08.27 |
---|---|
29일차 - Spring강의(인증과 인가) (0) | 2024.08.23 |
26일차 - Spring강의(Entity, 영속성 컨텍스트) (0) | 2024.08.20 |
25일차 - Spring강의(IoC와 DI) (0) | 2024.08.19 |
25일차 - Spring강의(3 Layer Architecture) (0) | 2024.08.19 |