Spring 개발일지(6) - 의존 객체 주입 방법
Spring 개발일지는 여러 절로 구성되어 있습니다.
- Spring 개발일지(1) - 기본적인 상식
- Spring 개발일지(2) - 개발환경 구축
- Spring 개발일지(3) - 스프링 프로젝트 생성
- Spring 개발일지(4) - 자바로 스프링 개발
- Spring 개발일지(5) - 의존성 주입(DI)
- Spring 개발일지(6) - 의존 객체 주입 방법
- Spring 개발일지(7) - 의존 객체 자동 주입
- Spring 개발일지(8) - 의존 객체의 선택
설명하기에 앞서
안녕하세요. 풀스택 개발자를 위해 달려나가는 김준호 입니다.
저번 시간에는
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
속성을 이용합니다.
마무리
코드가 정상적으로 실행되는지 직접 작업하고 실습하는 것이 중요합니다. 다음시간에는 이러한 의존 객체들을 자동주입하는 방법에 대해 알아보겠습니다.