Bean 객체의 타입을 이용하여 의존 객체를 주입하는 예제
1) PhoneCall 클래스
package com.model.di.exam09;
public class PhoneCall {
}
package com.model.di.exam09;
public class SystemMonitor {
private PhoneCall call;
public void setCall(PhoneCall call){ // 프로퍼티 타입은 PhoneCall
this.call = call;
}
@Override
public String toString() {
return "SystemMonitor [call="+call+"]";
}
}
3) 실행 클래스
package com.model.di.exam09;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
/*
* 1. interface를 적용한 db 연동
* 2. byName : 프로퍼티 이름과 동일한 객체 주입
* Main -> Service -> Dao -> Shopping
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
AbstractApplicationContext context =
new ClassPathXmlApplicationContext("applicationContext2.xml");
context.registerShutdownHook();
/*
* 빈 객체의 이름이나 타입을 이용하여 의존 객체를 자동으로 주입
* - byName : 프로퍼티의 이름과 동일한 빈(bean) 객체 주입.
* - byType : 프로퍼티의 타입과 동일한 타입을 갖는 빈 객체 주입.
* - constructor : 생성자 파라미터 타입과 동일한 타입을 갖는 빈 객체를 생성자에 전달.
*/
SystemMonitor monitor = (SystemMonitor)context.getBean("monitor");
System.out.println(monitor);
context.close();
}
}
4) 설정 파일
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- exam08 예제 : 프로퍼티 이름을 이용한 의존 관계 자동 설정 -->
<!--
<bean id="shopService" class="com.model.di.exam08.ShopServiceImpl">
<property name="shopDao" ref="shopDao"></property>
</bean>-->
<!-- autowire에 byName은 프로퍼티 이름과 동일한 빈 객체 이름을 찾아 주입 -->
<bean id="shopService" class="com.model.di.exam08.ShopServiceImpl" autowire="byName"/>
<bean id="shopDao" class="com.model.di.exam08.ShopDaoImpl"></bean>
<!-- bean id shopDao와 ShopDaoImple에 있는 setShopDao가 동일 -->
<!-- exam09 : 프로퍼티 타입(클래스)을 이용한 의존 관계 자동 설정 -->
<bean id="monitor" class="com.model.di.exam09.SystemMonitor" autowire="byType"></bean>
<bean id="call" class="com.model.di.exam09.PhoneCall"></bean>
</beans>
' Spring Framework' 카테고리의 다른 글
@Required : 반드시 프로퍼티를 이용하여 값을 주입받도록 한다. (0) | 2016.03.30 |
---|---|
스프링에서 Bean 객체의 플로우를 보기 위한 예제 (0) | 2016.03.29 |
프로퍼티 이름을 이용한 의존 관계 자동 설정 (autowire="byName") (0) | 2016.03.28 |
List 타입과 Map 타입 프로퍼티 전달 받기 (0) | 2016.03.28 |
생성자를 이용하여 자료를 전달 (constructor-arg) (0) | 2016.03.28 |