-
[JAVA/SPRING] 의존객체 선택개발/Java 2019. 2. 28. 12:26
다수의 빈 객체 중 의존 객체의 대상이 되는객체를 선택하는 방법.
동일한 객체가 2개 이상인 경우, 스프링 컨테이너는 자동 주입 대상 객체를 판단하지 못해서 Exception을 발생시킨다.
<context:annotation-config />
<bean id="wordDao1" class="com.word.dao.WordDao" />
<bean id="wordDao2" class="com.word.dao.WordDao" />
<bean id="wordDao3" class="com.word.dao.WordDao" />
private WordDao wordDao;위 경우에서, 동일한 객체가 3개이므로, Exception이 발생한다.
@Qualifier annotaion을 통해, 주입할 객체를 명시함으로서 해결할 수 있다.
<context:annotation-config />
<bean id="wordDao1" class="com.word.dao.WordDao" />
<qualifier value="usedDao"/>
<bean id="wordDao2" class="com.word.dao.WordDao" />
<bean id="wordDao3" class="com.word.dao.WordDao" />
"usedDao") (
private WordDao wordDao;프로퍼티의 이름과, bean의 id가 같으면, @Qualifier이 없어도 에러가 발생하지 않고 자동으로 주입 된다
추천하지 않는 방법
<context:annotation-config />
<bean id="wordDao" class="com.word.dao.WordDao" />
<bean id="wordDao2" class="com.word.dao.WordDao" />
<bean id="wordDao3" class="com.word.dao.WordDao" />
private WordDao wordDao;의존객체 자동 주입 체크
자동 주입할 객체가 업는 경우, Exception 에러가 발생한다.
@Autowired annotation에 required=true 옵션을 통해, 있으면 주입하고, 없으면 주입하지 않게 하면서, Exception을 피할 수 있다.
웬만하면 사용하지 않음.
required=false) (
private WordDao wordDao;@Autowired와 거의 비슷하게 어노테이션을 이용해서 의존 객체를 자동으로 주입할 수 있다.
required 속성을 지원하지 않는다.
<context:annotation-config />
<bean id="wordDao" class="com.word.dao.WordDao" />
private WordDao wordDao;@Autowired의 @Qualifier처럼, @Inject에선, bean의 id를 @Named 어노테이션에 명시함으로서 의존객체를 선택할 수 있다.
<context:annotation-config />
<bean id="wordDao1" class="com.word.dao.WordDao" />
<bean id="wordDao2" class="com.word.dao.WordDao" />
<bean id="wordDao3" class="com.word.dao.WordDao" />
value="wordDao1") (
private WordDao wordDao;'개발 > Java' 카테고리의 다른 글
[JAVA/SPRING] 어노테이션을 이용한 스프링 설정 – 1 (0) 2019.02.28 [JAVA/SPRING] 생명주기 (0) 2019.02.28 [JAVA/SPRING] 의존객체 자동 주입 (0) 2019.02.27 [JAVA/SPRING] 스프링 설정 파일 분리 (0) 2019.02.26 [JAVA/SPRING] 다양한 의존 객체 주입 (0) 2019.01.28