2013년 7월 23일 화요일

[ORACLEJAVA개발자실무교육,오엔제이프로그래밍실무교육센터, Spring Framework3.2]Spring IoC, DI 생성자 주입(Constructor Injection)

Spring IoC 생성자 주입(Constructor Injection)XML기반으로 이용하여 만들어 보자.


오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷  실무전문 강의)



1.     /src/main/resources/xmlBeanFactory.xml

<?xml version="1.0" encoding="UTF-8"?>
      
       <bean id="car" class="onj.spring.di2.Car"/>

       <bean id="audi" class="onj.spring.di2.Audi">
             <constructor-arg name="car"><ref bean="car"/></constructor-arg>  
       </bean>     
</beans>

2.     CarMaker.java

package onj.spring.di2;

public interface CarMaker {
       public Car sell();
}



3.     Audi.java

package onj.spring.di2;


//Audi 인스턴스가 생성될 Car 인스턴스를 주입받는다.
public class Audi implements CarMaker {
       private Car car;
      
       public Audi(Car car) {  //생성자 주입
             this.car = car;
       }
      
       public Car sell() {
             this.car.setName("Audi A6");
             return car;
       }
}




4.     Car.java

package onj.spring.di2;


//Audi에 주입될 클래스이므로 car 라는 이름으로 XML 파일에서 빈정의함
public class Car {
       private String name;
         public Car() {
         }

         public String getName() {
            return this.name;
         }
         public void setName(String name) {
            this.name  = name;
         }
}



5.     ConstructorInjectionExam.java

package onj.spring.di2;

import org.springframework.context.support.GenericXmlApplicationContext;

public class ConstructorInjectionExam {
       public static void main(String[] args) {
             GenericXmlApplicationContext ctx = new GenericXmlApplicationContext();
             ctx.load("classpath:xmlBeanFactory.xml");
             ctx.refresh();
            
             CarMaker carMaker = ctx.getBean("audi", Audi.class);

             Car c = carMaker.sell();
             System.out.println("I sold a car... " + c.getName());
       }
}



6.     [결과]
I sold a car... Audi A6 

댓글 없음:

댓글 쓰기