스프링 XML설정 ref bean, ref local차이, 빈정의시 id와 name의 차이(스프링동영상/자바동영상/자바교육/스프링교육/SpringFramework/스프링프레임워크/스프링학원/자바학원/자바/JAVA)
n bean vs local
<bean id="empService" class="xmlinjection.EmpService">
<constructor-arg ref="empDao"/>
<constructor-arg><ref bean="empDao"/> </constructor-arg>
<constructor-arg><ref local="empDao"/> </constructor-arg>
</bean>
<ref bean=“onjBean”/>
가장 일반적인 형태, 동일한/상위 BeanFactory or ApplicationContext 내에서 자바 빈을 검색, 물론 동일한 XML 설정 파일 내부가 아니더라도 관계 없다. 찾고자 하는 onjBean은 id, name 어느 것이나 정의되어 있으면 된다.
<ref local= “onjBean” />
동일한 XML 설정 파일내에서 onjBean을 검색하며 onjBean은 bean정의의 id로 검색하며, Spring4에서 local을 더 이상 사용하지 않는다. 스프링4 이상이라면 <ref bean=“”/>을 사용하자.
n 빈 정의시 id 와 name의 차이
ü id or name은 하나의 XML 파일에서는 하나만 정의가능(유일). 중복되면 안됨
ü 하나의 XML 파일, bean정의에는 id, name에 중복 이름 사용 가능.
<bean id="designer" name="emp,designer" class="idnametest.Designer"/>
ü XML 파일이 다르면 id, name 중복 정의가능. 뒤에 로딩되는 파일의 빈이 선택된다.
(XML작성시 오류발생 하지 않지만 실행하여 XML 로딩시 중복 선언 오류발생)
<bean id="emp" name = "designer" class="idnametest.Designer"/>
<bean id="emp" class="idnametest.Programmer"/>
ü 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");
ü 다른 설정파일에 id, name이 같은 빈을 정의할 수 있다.
[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이 로드된다.
[실습]
package idnametest;
public abstract class Emp {
public abstract void work();
}
실행
ApplicationContext 초기화...
Programmer working...
Designer working...
Programmer working...
#refbean, #reflocal, #스프링DI, #스프링IoC, #SpringDI, #SpringIoC, #자바스프링, #Spring동영상, #Spring강의, #스프링프레임워크, #스프링교육, #스프링학원, #스프링강좌, #스프링강의, #자바학원, #자바, #스프링동영상, #자바동영상, #스프링프레임워크교육, #스프링프레임워크강의, #스프링프레임워크학원
댓글 없음:
댓글 쓰기