28일차 - Spring강의(Bean 수동 등록, Type중복 시 Bean 주입)

2024. 8. 22. 18:20·Java & Spring/Spring

□ Bean 수동 등록

  • @Component를 사용하면 자동으로 해당 클래스를 Bean으로 등록해줌
  • 기술적인 문제나 공통적인 관심사를 처리할 때 사용하는 객체들을 수동으로 등록
    • 공통 로그처리와 같은 비즈니스 로직을 지원하기 위한 부가적이고 공통적인 기능들을 '기술지원 Bean'이라 부르고 수동등록 함
    • 수동 등록된 Bean에서 문제가 발생 했을 때 해당 위치를 파악하기 쉬운 장점이있음
@Configuration
public class PasswordConfig {

    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }
}
  1. Bean으로 등록하고자 하는 객체를 반환하는 메서드를 선언
  2. 그 매서드 위에 @Bean 애노테이션 추가
  3. 해당 메서드가 속해있는 클래스에다가 @Configuration 애노테이션 추가

□ 같은 타입의 Bean이 2개일 때

※ @Autowired는 Type으로 우선 스캔하고 그다음 Bean의 이름으로 스캔한다.

 

Food라는 interface가 존재하고

Food를 implements하는 Chicken과 Pizza클래스가 존재할 때

다음과 같이 하나 이상의 Food type이 있다는 오류가 발생한다 세가지 방법으로 해결 할 수 있다.

  1. 정확하게 해당하는 구현체를 명시해준다(Bean의 이름으로)
  2. Bean 객체에 @Primary를 설정한다. 같은 타입이 있더라도 @Primary가 우선적으로 주입된다.
  3. @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)  (1) 2024.08.19
'Java & Spring/Spring' 카테고리의 다른 글
  • 31일차 - Spring강의(Entity 연관 관계)
  • 29일차 - Spring강의(인증과 인가)
  • 26일차 - Spring강의(Entity, 영속성 컨텍스트)
  • 25일차 - Spring강의(IoC와 DI)
DJ.Kang
DJ.Kang
백엔드 개발 기록 블로그
  • DJ.Kang
    DJ Hello World
    DJ.Kang
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 이론공부
        • 자격증
        • 개념
      • 시스템설계
      • Java & Spring
        • TIL
        • 트러블슈팅
        • 고도화
        • 알고리즘
        • 코딩테스트
        • Java
        • Spring
        • Thymeleaf
      • 프로젝트
        • coin-trading
        • 트러블슈팅
      • Docker
      • DB
      • AWS
      • CI-CD
      • 웹
      • git & github
      • 구인공고분석
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    java기초
    java
    java two-pointer
    개발로드맵
    java arrays.copyofrnage()
    데이터 타입
    java 메서드
    java 멤버
    자료구조
    데이터 크기
    프로그래머스 java 기초 트레이닝
    Java this
    java enhance switch
    java 유클리드 호제법
    java 에라토스테네스의 체
    Java 생성자
    java 제어자
    java 세수의합
    java super
    프로그래머스 java 기초트레이닝
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
DJ.Kang
28일차 - Spring강의(Bean 수동 등록, Type중복 시 Bean 주입)
상단으로

티스토리툴바