Whiteship's Note


Constructor Injection 할 때 인자 구분

Spring/Chapter 3 : 2007.03.08 18:16


Setter Injection을 할 때는 property의 name이 표기가 되니까 어디로 들어가는 값인지 명확하지만 Constructor Injectoin을 할 때는 순서에 의존하게 되는데.. 좀.. 불명확 합니다.

   <bean id="keesun2" class="beanConfiguration.Member">
       <constructor-arg value="whiteship" />
       <constructor-arg value="1234" />
       <constructor-arg value="26" />
   </bean>

그래서 <constructor-arg /> 태그의 type 이나 index 속성을 사용해서 명확히 해주는게 좋겠습니다. 특히 primitive type의 경우에는 전부 <value /> 라는 하위 엘리먼트 또는 value 속성으로 적어 주게 되어있는데 이럴 때 써주는게 좋을 것 같습니다. non-primitive type 일 경우에는 type보다는 index가 좋겠네요. index는 0부터 시작해서 첫번째 인자를 나타냅니다.

    <bean id="keesun2" class="beanConfiguration.Member">
        <constructor-arg index="0" value="whiteship" />
        <constructor-arg index="1" value="1234" />
        <constructor-arg index="2" value="26" />
    </bean>

'Spring > Chapter 3' 카테고리의 다른 글

Autowiring  (0) 2007.03.09
Collection Merging  (0) 2007.03.09
Collections - <list />  (0) 2007.03.08
Inner beans  (0) 2007.03.08
idref 엘리먼트  (0) 2007.03.08
Constructor Injection 할 때 인자 구분  (0) 2007.03.08
Setter Injection & Constructor Injection  (0) 2007.03.08
3.3. Dependencies  (0) 2007.03.08
Bean 생성하기  (0) 2007.03.07
복잡한 Alias  (0) 2007.03.07
Aliasing Beans  (0) 2007.03.07
top

Write a comment.


Setter Injection & Constructor Injection

Spring/Chapter 3 : 2007.03.08 14:19


예제로 사용될 Member 클래스 입니다.
1. Setter Injection

이것을 사용하기 위해서는 setter가 있어야 합니다. 설정파일에는 다음과 같이 <property /> 태그를 이용해서 Injection을 합니다.
    <bean id="keesun" class="beanConfiguration.Member">
        <property name="id" value="whiteship" />
        <property name="password" value="pass" />
        <property name="age" value="26" />
    </bean>

다음과 같이 테스트 메소드를 작성한 뒤 테스트 해 봅니다.
    @Test public void setterInjection(){
        Member keesun = (Member) bf.getBean("keesun");
        assertEquals("whiteship", keesun.getId());
        assertEquals("pass", keesun.getPassword());
        assertEquals(26, keesun.getAge());
    }
됩니다. 이때 적절한 primitive type으로 알아서 바꿔주는 것을 확인할 수 있습니다.

2. Constructor Injection

이것을 사용하기 위해서는 인자가 있는 생성자가 필요합니다. 설정파일에는 <constructor-arg /> 태그를 사용합니다.
    <bean id="keesun2" class="beanConfiguration.Member">
        <constructor-arg value="whiteship" />
        <constructor-arg value="pass" />
        <constructor-arg value="26" />
    </bean>
테스트 코드는 위에서 getBean("keesun2")로만 바꿔주면 됩니다.

'Spring > Chapter 3' 카테고리의 다른 글

Collection Merging  (0) 2007.03.09
Collections - <list />  (0) 2007.03.08
Inner beans  (0) 2007.03.08
idref 엘리먼트  (0) 2007.03.08
Constructor Injection 할 때 인자 구분  (0) 2007.03.08
Setter Injection & Constructor Injection  (0) 2007.03.08
3.3. Dependencies  (0) 2007.03.08
Bean 생성하기  (0) 2007.03.07
복잡한 Alias  (0) 2007.03.07
Aliasing Beans  (0) 2007.03.07
id, name and BeanDefinitionName  (0) 2007.03.06
top

Write a comment.