티스토리 뷰

Spring DI 구성에서 사용하고자 하는 Dao 에 어떤 값을 전달하고자 하면, 등록한 bean 태그 내부에 constructor-arg 태그를 사용하여 전달할 수 있다.


◎ExamDao

package test.exam01;

public class ExamDao {
	
	private String msg;
	
	public ExamDao() {
		
	}

	public ExamDao(String msg) {
			this.msg = msg;
	}
	
	public void printMessage() {
		System.out.println("ExamDao의 msg 내용: " + msg);
	}

}

이때, 위와 같이 기본 생성자가 무조건 있는 상태에서 setter개념의 생성자를 하나 더 만들어줘야 한다.

 

◎exam01.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 = "examDao" class = "test.exam01.ExamDao">
			<constructor-arg value ="Test 문자열을 생성자에게 전달"></constructor-arg>
	
	</bean>
	
</beans>

 

◎ExamMain

package test.exam01;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

public class ExamMain {

	public static void main(String[] args) {
				ApplicationContext context = new FileSystemXmlApplicationContext("src/test/exam01/exam01.xml");
				
				ExamDao exam = (ExamDao)context.getBean("examDao");
				
				System.out.println("Start");
				
				exam.printMessage();
				
				System.out.println("end");

	}

}

 

값이 여러 개인 경우는 순차적으로 constructor-arg를 추가해주면 된다. 또한 기본적으로 value 속성을 이용하여 값을 전달하면 해당 인자의 자료형은 String이다. 그러나 value 속성의 type 속성을 추가하면 해당 자료형을 변경할 수 있다.

 

반응형
Comments