반응형
Spring - Injecting Inner Beans
(원문 위치 : http://www.tutorialspoint.com/spring/spring_injecting_inner_beans.htm )
다른 class의 범위안에서 정의되어지는 java inner class와 유사하게 inner bean은 다른 bean의 범위내에서 정의되어지는 bean이다. 따라서 <property/> 또는 <constructor-arg/> 요소 내부의 <bean/> 요소는 inner bean으로 불려지고 아래와 같이 보여진다.
<?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-3.0.xsd"> <bean id="outerBean" class="..."> <property name="target"> <bean id="innerBean" class="..."/> </property> </bean> </beans>
Example:
[003] HelloWorld Example을 참조하여 프로젝트를 생성한다.
TextEditor.java:
package com.tutorialspoint; public class TextEditor { private SpellChecker spellChecker; // a setter method to inject the dependency. public void setSpellChecker(SpellChecker spellChecker) { System.out.println("Inside setSpellChecker." ); this.spellChecker = spellChecker; } // a getter method to return spellChecker public SpellChecker getSpellChecker() { return spellChecker; } public void spellCheck() { spellChecker.checkSpelling(); } }
SpellChecker.java:
package com.tutorialspoint; public class SpellChecker { public SpellChecker(){ System.out.println("Inside SpellChecker constructor." ); } public void checkSpelling(){ System.out.println("Inside checkSpelling." ); } }
MainApp.java:
package com.tutorialspoint; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class MainApp { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml"); TextEditor te = (TextEditor) context.getBean("textEditor"); te.spellCheck(); } }
Beans.xml : inner bean을 사용하는 setter기반 삽입 설정
<?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-3.0.xsd"> <!-- Definition for textEditor bean using inner bean --> <bean id="textEditor" class="com.tutorialspoint.TextEditor"> <property name="spellChecker"> <bean id="spellChecker" class="com.tutorialspoint.SpellChecker"/> </property> </bean> </beans>
실행결과는 아래아 같다. inner bean을 사용하여 textEditor의 setSpellChecker()함수의 인자로 spellChecker를 전달하였다.
Inside SpellChecker constructor. Inside setSpellChecker. Inside checkSpelling.
반응형