-
스프링 컨테이너에서 자동주입시에 만약 동일한 객체가 2개 이상일 경우에는 Exception이 생길텐데 어떻게 해야할까 ?
<bean id="userDao" class="com.word.dao.UserDao">
<qualifier value="IdDao"/>
</bean>
<bean id="userDao2" class="com.word.dao.UserDao"/>
이렇게 스프링 컨테이너에 여러 개의 bean객체가 있을 경우 qualifier와 value값을 입력해서
@Autowired
@Qualifier("IdDao")
private userDao userDao;
라고 java 파일에 입력하면 타입이 비슷한 여러 개의 빈 객체에서 value값이 같은 객체를 불러올 수 있다.
물론 @Autowired의 의존 객체 자동 생성이 스프링 컨테이너에 bean객체가 반드시 있어야만 가능하기에
코드가 길어질 경우 Exception이 발생할 수 있기에 이때는 @Autowired에 (required=false)값을 입력해주면
예외처리를 할 수 있다.
또한 @Inject 로도 의존 객체를 자동으로 주입 받을 수 있다.
이 때는 스프링 컨테이너에 qualifier를 붙이는 대신에
java에 @Inject와 @Named를 붙여서 사용할 수 있다.
@Inject
@Named(value="IdDao")
같은 명령문으로 입력할 수 있다.
참고로 @Autowired의 경우 효율적으로 java파일을 분리할 때 코드가 다른 파일에 있는데 갖고와서 써야할 경우가 있을 때
@Autowired를 선언하고 프로퍼티(객체)를 선언하면 갖고와서 사용할 수 있다.
의존 객체 자동 주입에 대해서 외부에서 의존 객체를 주입하고 그것에 더해서 자동으로 주입할 수 있는 애노테이션에 대해서도 익숙해지자.
'JSP&스프링 > 스프링 키포인트' 카테고리의 다른 글
[스프링] @Configuration & @Bean 애노테이션의 정의와 예시문 정리하기 (0) 2023.01.28 [스프링] 스프링 컨테이너와 빈 객체의 생명주기와 생명주기를 나타내는 용어 정리하기 (0) 2023.01.28 [스프링] 의존 객체를 자동으로 주입해주는 애노테이션 => @Autowired, @Resource의 정의와 특징 정리하기 (0) 2023.01.28 [스프링] DI 의존주입의 정의와 의존객체를 주입하는 다양한 방법에 대해서 정리하기 (0) 2023.01.27 [스프링] 스프링에서 컨테이너와 빈의 정의와 스프링에서 객체를 생성하는 방법 정리하기 (0) 2023.01.23 댓글