Spring IoC 생성자 주입(Constructor Injection)을 XML기반으로 이용하여
만들어 보자.
오라클자바커뮤니티에서 설립한
오엔제이프로그래밍 실무교육센터
(오라클SQL, 튜닝,
힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷 실무전문 강의)
1.
/src/main/resources/xmlBeanFactory.xml
<?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">
<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
댓글 없음:
댓글 쓰기