본문 바로가기

SpringBoot

10월24일 SpringBoot 스프링 Bean조회 5

부모타입으로 bean을 조회할때 만약 같은 부모를 가진 자식 bean이 다수 존재할 경우

부모타입으로만 조회시 bean중복 오류가 발생한다.

 

조회1 . bean호출시 "이름"을 같이 호출하여 특정한 bean하나만을 불러준다.

ac.getBean("rateDiscountPolicy", DiscountPolicy.class);

 

조회2. 구체적인 자식타입을 지정(단 비효율적이다)

ac.getBean(RateDiscountPolicy.class);

즉 부모값을 상속받아 구현된 자식의 타입을 구체적으로 명시해서 가져오는 방법

 

조회3. 부모타입으로 조회하되 Map으로 받아오기

Map<String , DiscountPolicy> beansOfType = ac.getBeansOfType(DiscountPolicy.class);

같은 부모를 가진 bean이 많을것을 대비해 Map으로 여러개를 받으면 오류가 발생하지 않는다.

 

조회4. 최상위 부모 Object로 조회하되 , Object를 상속받는 모든 Bean을 반환한다.

Map<String , Object> beansOfType = ac.getBeanOfType(Object.class);

 

등록된 Bean을 조회하는 방법, 

bean이 하나일 경우 타입만으로 조회가 가능하지만 일반적으로 이름까지 붙여서 조회하고

부득이하게 타입으로만 조회할 경우 Map을 사용해서 오류를 방지한다.

 

Bean조회시 조회기준으로 역활(인터페이스)나 구현(클래스) 어느것으로 라도 조회는 가능하다,