ref 태그를 이용한 Value Injection(ref local, ref bean, id, name의 차이)
2-5-10. ref 태그를 이용한 Value Injection(ref local, ref bean, id, name의 차이)
n 하나의 빈을 다른 빈에 주입하기 위해 두 개의 빈 설정이 필요한데 하나의 빈은 주입될 빈이고, 다른 빈은 타겟이 되는 빈에대한 설정이다. 주입될 빈과 타겟에서 setter로 정의한 빈은 서로 호환이 되기만 하면 된다.(타겟에서 정의한 빈이 인터페이스이면 주입될 빈은 인터페이스를 구현한 클래스면 된다.)
n 빈 정의는 같은 XML 파일 내에 있어야 하는데 만약 다른 이름의 빈을 주입하거나 다른 설정파일에서 빈을 찾으려면 <ref> 태그의 bean 속성을 사용해야 한다.
n ref태그를 사용하여 주입하며 ref태그는 항상 property 나 constructor-arg 다음에 나와야 한다.
[app-context4.xml]
[Onj.java]
[RefInjectionExam.java]
n bean vs local
<ref bean=“onjBean”/>
<ref local= “onjBean” />
n 빈 정의시 id 와 name의 차이
ü id or bean은 하나의 XML 파일에서는 하나만 정의가능(유일)
ü id는 오로지 하나, name은 여러 개 정의 가능하다.
<bean id="foo" name = "foo1, foo2" class="ojc.Foo"/>
Foo f1 = (Foo) context.getBean("foo");
Foo f2 = (Foo) context.getBean("foo1");
Foo f3 = (Foo) context.getBean("foo2");
ü 다른 설정파일에 name이 같은 빈을 정의할 수 있다. id는 불가.
[bean1.xml]
<bean id="foo" name = "king, queen" class="ojc.Foo"/>
[bean2.xml]
<bean id="bar" name = "king" class="ojc.Bar"/>
FileSystemXmlApplicationContext context =
new FileSystemXmlApplicationContext(new String[] { "beans2.xml", "beans1.xml" });
Foo f = (Foo) context.getBean("king");
bean1.xml 파일이 나중에 로딩되므로 bean1.xml의 king이 로드된다.
댓글 없음:
댓글 쓰기