의존관계 주입

YOONWOO AHN·2023년 1월 18일
1
post-thumbnail

며칠동안 스프링 빈 의존관계 주입에 관한 공부를 열심히 했다.

Map으로 Discountpolicy 에 대한 모든 빈에 대한 정보를 담고

String으로 받아서 fix면 fix를 호출하고, rate면 rate를 호출하여 실행하는 대략 그런 로직을 실습했는데
이상하게 fix는 돌아가는데 rate는 안돌아감.
그래서 봤더니 rate에는 @Component 어노테이션을 달아주지 않아서 빈으로 등록이 되지 않았음.

하지만 getBean(DiscountPolicy.class)를 실행하면 스프링은 클래스 타입으로 조회하고, 두개의 빈이 잡히기 때문에 오류가 난다.(NoUniqueBean 오류)

그래서 fix와 rate 둘다 @Compont 어노테이션을 달아주고, rate에만 @Primary 어노테이션을 달았다.
primary는 여러개의 빈이 매칭되었을 때, 우선순위를 정해준다.
그리고 discountcode를 rateDiscountpolicy가 아닌 클래스명인 Ratediscountpolicy로 조회하면 당연히 빈을 찾을 수 없다.
빈으로 등록될 때 앞자리는 소문자로 바뀌어서 등록되기 때문이다.
여튼 오늘도 빡대가리 열심히 공부하느라 수고했어 ^^

profile
수학 못하는데 공대 다니는 국밥충 코린이 #JAVA #spring

1개의 댓글

comment-user-thumbnail
2023년 1월 19일

무슨 말을 하는지 문과생은 이해가 가질않지만 .. 오늘도 수고하셨습니다

답글 달기