본문 바로가기
웹 프로그래밍(풀스택-->java)/웹프로그래밍(백엔드-->java)

55. 생성자를 통한 주입

by 백엔드개발자0107 2021. 12. 20.

이번 시간에는 생성자를 통한 주입에 대해서 공부해 볼것이다.

 

 

 

-->  이렇게 빈(bean)을 정의를 할떄, 생성자나 뭐 다른거를 지정해가주고 값을 넣어주는 것 이것을 주입이라고 한다.

 

MainClass.java

 

package kr.co.softcampus.main;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import kr.co.softcampus.beans.TestBean;

public class MainClass {

	public static void main(String[] args) {
		
		ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("kr/co/softcampus/config/beans.xml");
		
		TestBean t1 = new TestBean();
		t1.printData();

		System.out.println("--------------------");
		
		TestBean t2 = new TestBean(100);
		t2.printData();
		
		System.out.println("--------------------");
		
		TestBean t3 = new TestBean(11.11);
		t3.printData();
		
		
		TestBean obj1 = ctx.getBean("obj1",TestBean.class);
		obj1.printData();
		

		System.out.println("--------------------");
		
		
		
		TestBean obj2 = ctx.getBean("obj2",TestBean.class);
		obj2.printData();
		
	
		System.out.println("--------------------");
		
		
		TestBean obj3 = ctx.getBean("obj3",TestBean.class);
		obj3.printData();
		

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

		
		ctx.close();
		
	}

}

 

TestBean.java

package kr.co.softcampus.beans;

public class TestBean {
	
	private int data1;
	private double data2;
	private String data3;
	
	public TestBean() {
		// TODO Auto-generated constructor stub
	System.out.println("TestBean의 기본 생성자 ");
	this.data1 = 0;
	this.data2 = 0.0;
	this.data3 = null;
	
	}

public TestBean(int data1) {
		
		System.out.println("TestBean의 생성자: int 변수 1개 ");
		this.data1 = data1;
		this.data2 = 0.0;
		this.data3  = null;
		
	}

public TestBean(double data2) {
	
	System.out.println("TestBean의 생성자: double 변수 1개 ");
	this.data1 = 0;
	this.data2 = data2;
	this.data3 = null;
	
}
	
public TestBean(String data3) {
	
	System.out.println("TestBean의 생성자: String 변수 3개 ");
	this.data1 = 0;
	this.data2 = 0;
	this.data3 = data3;	
	
}


	public void printData() {
		System.out.printf("data1 : %d\n",data1);
		System.out.printf("data2 : %d\n",data2);
		System.out.printf("data3 : %d\n",data3);
		
	}
	
	
	
	
}

 

beans.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"
	                	   default-init-method="default-init" default-destroy-method="default-destroy">

<bean id = "obj1" class="kr.co.softcampus.beans.TestBean" lazy-init="true"/>


<bean id = "obj2" class="kr.co.softcampus.beans.TestBean" lazy-init="true">
<constructor-arg value="100"/> 
</bean>

<bean id= 'obj3' class="kr.co.softcampus.beans.TestBean" lazy-init="true">
<constructor-arg value='11.11'/>
</bean>

</beans>

--> 정리하자면, 빈객체를 TestBean.java로 만든거를 beans.xml파일에서도 만들수 있다라는것을 보여준것이다..!

 

beans.xml 추가

 

<bean id= "obj8" class="kr.co.softcampus.beans.TestBean2" lazy-init="true">

<constructor-arg>
<bean class="kr.co.softcampus.beans.DataBean"/>
</constructor-arg>

</bean>

<constructor-arg>

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

</constructor-arg>

 

--> 여기에서 만든 빈은 첫번째 매개변수에 들어가서 TestBean2 클래스안의 매개변수로 인지되서 실행이 된다.