Bean 객체의 타입을 이용하여 의존 객체를 주입하는 예제



1) PhoneCall 클래스

package com.model.di.exam09;

public class PhoneCall {

}




2) SystemMonitor 클래스


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>




Posted by netyhobby
,