Spring - 빈 객체 값 주입 (Setter 메소드)

2020. 8. 17. 14:15Java/Spring

반응형

Bean을 정의할 때 Bean 객체가 가지고 있을 기본 값을 생성자가 아닌 Setter 메서드를 통해 주입할 수 있다.

 

먼저 다음과 같이 클래스를 생성하여 객체를 만들고 setter,getter을 만들어 준다.

public class TestBean2 {
	private int data1;
	private double data2;
	private boolean data3;
	private String data4;
	private DataBean data5;
	private DataBean data6;
	
	public int getData1() {
		return data1;
	}

	public void setData1(int data1) {
		this.data1 = data1;
	}

	public double getData2() {
		return data2;
	}

	public void setData2(double data2) {
		this.data2 = data2;
	}

	public boolean isData3() {
		return data3;
	}

	public void setData3(boolean data3) {
		this.data3 = data3;
	}

	public String getData4() {
		return data4;
	}

	public void setData4(String data4) {
		this.data4 = data4;
	}
	
	public DataBean getData5() {
		return data5;
	}

	public void setData5(DataBean data5) {
		this.data5 = data5;
	}

	public DataBean getData6() {
		return data6;
	}

	public void setData6(DataBean data6) {
		this.data6 = data6;
	}

	public void PrintData() {
		System.out.println("data1=> "+data1+"  data2=> "+data2+" data3=> "+data3+" data4=> "+data4+" data5 =>"+data5);
		System.out.println("data6 =>" +data6);
	}
}

beans.xml에서 bean 태그 내에 property 태그를 넣어서 setter에 값을 주입 가능하다

<bean id="t8" class='kr.co.softcampus.beans.TestBean2' lazy-init="true" init-method="PrintData">
		<property name="data1" value="100" />
</bean>

다음과 같이 정의하면 name의 값 data1을 이용하여 bean에서 정의된 클래스에서 setData1을 찾아서 값을 주입한다. 

 

여러개의 값을 주입하려면 property 태그를 그 수만큼 넣는다.

<bean id="t9" class='kr.co.softcampus.beans.TestBean2' lazy-init="true" init-method="PrintData">
  <property name="data1" value="100" />
  <property name="data2" value="20.0" />
  <property name="data3" value="true" />
  <property name="data4" value="ok" />
  <property name="data5">
    <bean class="kr.co.softcampus.beans.DataBean"/>
  </property>
  <property name="data6" ref="useref"/>
</bean>


<bean id="useref"  class="kr.co.softcampus.beans.DataBean"/>

 

위와 같이 넣으면 각 name에 정의된 값을 토대로 각 setter 메소드를 찾아 값을 주입한다.

객체의 경우에는 property 태그 내에 빈 태그를 직접 넣어서 객체를 주입 가능하고, 빈 태그의 id 값을 ref 태그로 받아서 사용이 가능하다.

 

 

public class MainClass {

public static void main(String[] args) {
		ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("kr/co/softcampus/config/beans.xml");
		
		TestBean2 t8 = ctx.getBean("t8",TestBean2.class);
		System.out.println("======================================================");
		TestBean2 t9 = ctx.getBean("t9",TestBean2.class);
		System.out.println("======================================================");
		ctx.close();

	}

}

다음 코드를 실행하면

정상적으로 출력된다.

.

.

.

.

- name : 데이터를 주입할 프로퍼티의 이름

- value : 기본 자료형 및 문자열을 주입할 때 사용하는 속성

- ref : 객체의 주소 값을 주입할 때 사용하는 속성

반응형