JAVA/SPRING 2009. 5. 6. 11:12

이전 글에 이어서 의존관계자동설정에 대해서 알아 보겠습니다.
스프링은 의존하는 빈 객체의 타입이나 이름을 이용하여 의존 객체를 자동으로 설정할 수 있습니다. 여기(The Spring Framework - Reference Documentation)에 자세한 내용이 있네요 ^^;

일단 네가지 방식이 존재합니다. 방식으로는
1. byName : 프로퍼티의 이름과 같은 이름을 갖는 빈객체를 설정
2. byType : 프로퍼티의 타입과 같은 타입을 갖는 빈객체를 설정
3. constructor : 생성자 파라미터 타입과 같은 타입을 갖는 빈객체를 설정
4. autodetect : constructor방식을 먼저 적용, byType방식을 적용
네 가지 방식이 있습니다.

일단 설정파일에 포함된 모든 빈 객체에 대해서 특정방시의 자동 설정을 적용하고 싶다면
  1. <beans xmlns="http://www.springframework.org/schema/beans"  
  2.     xmlns:p="http://www.springframework.org/schema/p"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://www.springframework.org/schema/beans      
  5.   http://www.springframework.org/schema/beans/spring-beans-2.0.xsd   
  6.   default-autowire="byName">  
  7. ...    
  8. ...   
  9. </beans>  
이렇게 해주시면 됩니다.

네가지의 설정 중에서 예를 하나만 들겠습니다.

  1. <bean name="userService" class="yoyojyv.service.UserServiceImpl" autowire="byName"/>  
autowire의 속성 값을 네가지 속성중에 하나만 주면 됩니다. 여기선 byName을 썼군요.
DI설정을 프로퍼티 방식(setter Injection)을 썼을경우에 autowire속성을 constructor로 하면 어떻게 될까요? 직접 해본 결과 오류가 납니다. ㅋㅋ 각 설정에 맞게 써 주어야 하고, 또 byType, constructor, autodetect의 경우 동일한 타입의 빈 객체를 2개 이상 정의를 하게되면 오류가 납니다. 지가 어떤빈을 써먹어야 할지 결정을 못하네요~

의존 관계를 자동으로 알맞게 설정해주는 기능은 설정파일의 크기를 줄여주고 유용한 기능이긴 하지만, 설정파일만으로 빈 객체간의 의존관계를 파악하기 힘들다는 단점이 있습니다. 규모가 커질수록~ 더 파악하기 힘들어지기때문에 상황에 맞게~ 되도록이면 설정파일에 의존관계를 명시하는 것이 좋은 방법이라고 합니다.
posted by 나는너의힘
: