-
7장 di 생성자를 이용한 주입스프링 프레임워크 기초 공부 2020. 4. 27. 00:42
의존성 주입은 spring에서 아주 중요한 개념이자 장점이다.
bean객체를 생성할 때 bean 객체가 관리할 값이나 객체를 주입하는 것을 의미한다
bean객체 생성후 bean객체가 가질 기본 값을 자바 코드로 설정하는 것이 아닌 bean을 정의하는 xml코드에서 정의하는 것이다.
package kr.co.softcampus.beans; public class TestBean { private int data1; private double data2; private String data3; public TestBean() { 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 data1) { System.out.println("TestBean의 생성자:double 변수 1개"); this.data1=0; this.data2=data1; this.data3=null; } public TestBean(String data1) { System.out.println("TestBean의 생성자:String 변수 1개"); this.data1=0; this.data2=0.0; this.data3=data1; } public void printData() { System.out.println(data1); System.out.println(data2); System.out.println(data3); } }
TestBean 클래스 생성후 매개변수가 각각다른 생성자 3개를 선언한다.
<?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"> <!-- 생성자에 매개변수 타입이 int형과 double형 String형 3개가 있다면 String형이 가장 우선 다음으로 double형을 마지막 순위가 int형임--> <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' type='int'/><!-- 주입 --> </bean> <bean id='obj3' class='kr.co.softcampus.beans.TestBean' lazy-init='true'> <constructor-arg value = '11.11' type='double'/><!-- 주입 --> </bean> <bean id='obj4' class='kr.co.softcampus.beans.TestBean' lazy-init='true'> <constructor-arg value = '문자열' type='String'/><!-- 주입 --> </bean> </beans>
객체를 만들기위해 xml파일 작성
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) { // TODO Auto-generated method stub 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(); System.out.println("------------------------"); TestBean t4 = new TestBean("문자열"); t4.printData(); System.out.println("-----------자바객체-------------"); 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("------------------------"); TestBean obj4 = ctx.getBean("obj4", TestBean.class); obj4.printData(); ctx.close(); } }
자바로 객체를 생성하는 방법과 xml을 통한 객체생성방법의 차이를 볼수있다.
결과문
TestBean의 기본 생성자
0
0.0
null
------------------------
TestBean의 생성자:int 변수 1개
100
0.0
null
------------------------
TestBean의 생성자:double 변수 1개
0
11.11
null
------------------------
TestBean의 생성자:String 변수 1개
0
0.0
문자열
-----------자바객체-------------
TestBean의 기본 생성자
0
0.0
null
------------------------
TestBean의 생성자:int 변수 1개
100
0.0
null
------------------------
TestBean의 생성자:double 변수 1개
0
11.11
null
------------------------
TestBean의 생성자:String 변수 1개
0
0.0
문자열생성자를 이용한 객체주입
java를 사용하여 DataBean객체를 2개 생성한후 TestBean2객체에 넣어보았다. 출력값이 잘 나오는것을 볼 수 있다.
이제 spring을 이용한 객체 주입을 사용해보겠다.
먼저 TestBean2 객체를 생성한 후 constructor-arg태그를 사용하여 DataBean 객체를 두개 생성한후 주입하는 방식.
'스프링 프레임워크 기초 공부' 카테고리의 다른 글
9장 DI 자동주입 (0) 2020.04.27 8장 setter 메소드를 통한 주입 (0) 2020.04.27 6장 bean 객체 생성하기 (0) 2020.04.26 5장 ioc컨테이너 (0) 2020.04.26 4장 SpringFramework vs Java Programming 비교 (0) 2020.04.26