본문 바로가기
개발자 공부 - 인프런 온라인 강의/스프링 핵심 원리 - 기본편

[섹션 4. 스프링 컨테이너와 스프링 빈] 스프링 빈 조회 - 상속 관계 / 인프런 김영한 스프링 핵심 원리 기본편

by easpop 2023. 4. 1.
728x90
반응형

이번 시간에는 상속관계의 스프링 빈 조회에 대해서 알아보았다.

 

빈을 조회할 때, 상속관계로 되어 있다고 가정하자.

부모 타입으로 조회를 했는데, 자식이 여러개가 있다.

그렇다면, 기본 원칙은 부모 타입으로 조회를 한다면, 그 자식 빈들은 다같이 조회가 된다.

그래서, 모든 자바 객체의 최고 부모인 Object 타입으로 조회하면, 모든 스프링 빈을 조회한다.

모든 클래스들은 명시가 되어 있지는 않지만, 자바는 기본적으로 extends Object를 하고 있다.

 

상속 관계의 빈 조회를 테스트하기 위해 테스트 클래스를 생성해준다.

 

테스트를 위해 같은 타입의 두개의 빈 객체를 생성해준다.

DiscountPolicy 타입으로 조회를 한다면 자식인 두개의 빈이 조회가 될 것이라는 것을 예상할 수 있다~~

반응형

그리고 각각의 테스트 코드를 생성해준다.

25번째 라인의 메소드 코드는, 부모 타입으로  조회했을 경우, 자식 객체가 두개 이상 있을 경우 오류를 발생할 것이다.

그렇기 때문에, 33번째 라인의 메소드에서 빈 이름을 직접 지정해서 조회를 해준다.

테스트가 통과하면 성공하는 로직이기 때문에, 정상 통과한다.

 

혹은, 40번째 줄의 하위 타입으로도 조회가 가능한데, 좋지 않은 방법이라고 하심..ㅋㅋㅋ

 

위의 코드 사진에서 47번째 라인의 메소드를 실행하면, 위와 같은 테스트 결과가 나온다.

부모 타입으로 모두 조회하게 되면, 해당 부모타입을 전부 출력해준다.

 

57번째 라인의 메소드는 Object 타입으로 모두 조회를 해주는 코드이고, 테스트 결과는 위와 같다.

모든 자바 객체는 Object 타입이기 때문에, 스프링 내부에서 사용하는 스프링 빈에 등록이 된 빈 객체들이

전부 다 역시 출력되는 것을 확인할 수 있다!

728x90
반응형

댓글