/ SPRING

Spring 개발일지(6) - 의존 객체 주입 방법

Spring 개발일지는 여러 절로 구성되어 있습니다.


설명하기에 앞서

안녕하세요. 풀스택 개발자를 위해 달려나가는 김준호 입니다.
저번 시간에는 Spring DI(Dependecy Injection)에 대해 알아보았었습니다.
그 DI 객체를 생성할 때 생성자로 주입해서 객체를 생성하는 방법 외에 다양한 방법이 있습니다.
오늘은 그 다양한 방법에 대해 알아보겠습니다.


의존 객체 주입 방법

스프링 컨테이너에 Bean을 생성하기 위한 DI 객체 주입 방법에는 크게 4가지의 종류가 있습니다. 밑에 리스트를 살펴보도록 하죠

생성자를 이용한 의존 객체 주입

Setter()를 이용한 의존 객체 주입

List 타입 의존 객체 주입

Map 타입 의존 객체 주입

주입 방법을 실제로 코딩해보도록 하겠습니다.


생성자를 이용한 의존 객체 주입

/* RegisterService.java 파일입니다. */
/* RegisterDAO 객체를 의존받고 있는 상황입니다. */
RegisterService(RegisterDAO registerDAO) {
    this.registerDAO = registerDAO;
}
<bean id="registerDAO" class="dao.RegisterDAO"></bean>

<bean id="registerService" class="service.RegisterService">
    <constructor-arg ref="registerDAO"></constructor-arg>	
</bean>

RegisterService를 생성할 때 registerDAO 객체를 Spring Container 에서 받아오는데, 이럴 때 constructor-arg 을 사용합니다.

저번시간의 내용을 복습하려면 여기를 눌러주세요.


Setter()를 이용한 의존 객체 주입

/* DatabaseProperty.java 파일입니다. */
/* 생략 */
public void setJdbcUrl(String jdbcUrl) {
    this.jdbcUrl = jdbcUrl;
}
public void setUserId(String userId) {
    this.userId = userId;
}
public void setUserPw(String userPw) {
    this.userPw = userPw;
}
<bean id="databaseProperty" class="common.DatabaseProperty">
    <property name="jdbcUrl" value="jdbc:oracle:thin@localhost:1521:xe/"></property>
    <property name="userId" value="scott"></property>
    <property name="userPw" value="tiger"></property>
</bean>

DatabaseProperty를 생성할 때 Setter메소드를 이용할 때는 property속성을 이용합니다.


List객체를 이용한 의존 객체 주입

/* DatabaseProperty2.java 파일입니다. */
/* 생략 */
public void setJdbcUserInfo(List<String> jdbcUserInfo) {
    this.jdbcUserInfo = jdbcUserInfo;
}
<bean id="databaseProperty2" class="common.DatabaseProperty2">
    <property name="jdbcUserInfo">
        <list>
            <value>jdbc:oracle:thin@localhost:1521:xe/</value>
            <value>scott</value>
            <value>tiger</value>
        </list>
    </property>
</bean>

databaseProperty2를 생성할 때 list객체를 이용할 때는 property -> list속성을 이용합니다.


Map객체를 이용한 의존 객체 주입

/* DatabaseProperty3.java 파일입니다. */
/* 생략 */
public void setJdbcUserInfo(Map<String, String> jdbcUserInfo) {
    this.jdbcUserInfo = jdbcUserInfo;
}
<bean id="databaseProperty3" class="common.DatabaseProperty3">
    <property name="jdbcUserInfo">
        <map>
            <entry>
                <key>
                    <value>jdbcUrl</value>
                </key>
                <value>jdbc:oracle:thin@localhost:1521:xe/</value>
            </entry>
            <entry>
                <key>
                    <value>userId</value>
                </key>
                <value>scott</value>
            </entry>
            <entry>
                <key>
                    <value>userPw</value>
                </key>
                <value>tiger</value>
            </entry>
        </map>
    </property>
</bean>

databaseProperty3를 생성할 때 map객체를 이용할 때는 property -> map -> entry -> key -> value속성을 이용합니다.


마무리

코드가 정상적으로 실행되는지 직접 작업하고 실습하는 것이 중요합니다. 다음시간에는 이러한 의존 객체들을 자동주입하는 방법에 대해 알아보겠습니다.