Spring - 빈 객체 값 주입 (Setter 메소드)
2020. 8. 17. 14:15ㆍJava/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 : 객체의 주소 값을 주입할 때 사용하는 속성
반응형
'Java > Spring' 카테고리의 다른 글
Spring - 빈 객체 값 주입(자동주입) (0) | 2020.08.17 |
---|---|
Spring - 빈 객체 값 주입(컬렉션) (0) | 2020.08.17 |
Spring - 빈 객체 값 주입(생성자) (0) | 2020.08.17 |
Spring - BeanPostProcessor (0) | 2020.08.16 |
Spring - 빈 객체 생성 및 생명주기 (0) | 2020.08.16 |