본문 바로가기

기존카테고리/Spring_basic1

DI - Constructor(생성자)를 통한 주입 예제2


Person.java


package com.test.diEx03;


public class Person {

private String name;

private String gender;

private String age;

private String idNo;

public Person() {};

public Person(String name, String gender, String age, String idNo){

this.name = name;

this.gender = gender;

this.age = age;

this.idNo = idNo;

}


public String getName() {

return name;

}


public void setName(String name) {

this.name = name;

}


public String getGender() {

return gender;

}


public void setGender(String gender) {

this.gender = gender;

}


public String getAge() {

return age;

}


public void setAge(String age) {

this.age = age;

}


public String getIdNo() {

return idNo;

}


public void setIdNo(String idNo) {

this.idNo = idNo;

}

}




PersonInfo.java


package com.test.diEx03;


public class PersonInfo {

private Person person;

public PersonInfo() {};

public PersonInfo(Person person) {

this.person = person;

}

public void getPersonInfo(){

if(person!=null){

System.out.println("name: "+person.getName());

System.out.println("gender: "+person.getGender());

System.out.println("age: "+person.getAge());

System.out.println("id: "+person.getIdNo());

System.out.println("============================");

}

}

public void setPerson(Person person){

this.person = person;

}

}




Main.java


package com.test.diEx03;


import org.springframework.context.support.AbstractApplicationContext;

import org.springframework.context.support.GenericXmlApplicationContext;


public class Main {

public static void main(String[] args){

String confLoc = "classpath:person.xml";

AbstractApplicationContext ctx = new GenericXmlApplicationContext(confLoc);

PersonInfo personInfo = ctx.getBean("personInfo",PersonInfo.class);

personInfo.getPersonInfo();



// PersonInfo에 객체(reference) 주입

Person person =ctx.getBean("person2",Person.class);    // Spring 컨테이너(xml)에 객체를 입력

personInfo.setPerson(person);

personInfo.getPersonInfo();

ctx.close();    // Context 사용 후 닫아준다.

}


}




person.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="person1" class="com.test.diEx03.Person">
<constructor-arg>
<value>홍길동</value>
</constructor-arg>
<constructor-arg>
<value>남</value>
</constructor-arg>
<constructor-arg>
<value>26</value>
</constructor-arg>
<constructor-arg>
<value>720802-1696113</value>
</constructor-arg>
</bean>
<bean id="person2" class="com.test.diEx03.Person">
<constructor-arg value="한효주" />
<constructor-arg value="여" />
<constructor-arg value="21" />
<constructor-arg value="851212-1234567" />
</bean>
<bean id="personInfo" class="com.test.diEx03.PersonInfo">
<constructor-arg>
<ref bean="person1" />
</constructor-arg>
</bean>

</beans>