[JAVA]/Spring
[Spring] Spring DI 인자 전달
춘햄
2021. 6. 14. 11:05
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 속성을 추가하면 해당 자료형을 변경할 수 있다.
반응형