복붙노트

[SPRING] 동일한 스프링 빈을 같은 이름으로 두 번 정의하기

SPRING

동일한 스프링 빈을 같은 이름으로 두 번 정의하기

Spring IOC에서 유효한 (동일한 이름과 클래스를 가진) bean에 대한 두 가지 정의가 있습니까?

web.xml에 포함 된 두 개의 bean 정의 파일을 가지고 있습니다. 아래 샘플을 참조하십시오.

applicationContext-beans1.xml

<bean name="myWao"
    class="com.beans.myBean">       
</bean> 

applicationContext-beans2.xml

<bean name="myWao"
    class="com.beans.myBean">       
</bean> 

나는 지금까지 아무런 문제도 안고있다. 그러나 이것은 멀티 스레드 및 클러스터링되는 실제 환경에 영향을 미칠 수 있습니까?

참고 : 두 XML 모두에서 정의 된 다른 빈을 사용할 수 있으므로 두 XML이 모두로드됩니다 (한 번만).

해결법

  1. ==============================

    1.그것은 유효하지만 한 bean이 다른 bean에 의해 무시된다는 것을 알 수 있습니다. 로그에 다음과 같이 표시됩니다.

    그것은 유효하지만 한 bean이 다른 bean에 의해 무시된다는 것을 알 수 있습니다. 로그에 다음과 같이 표시됩니다.

    Overriding bean definition for...
    

    이 동작을 사용하면 이전에 제공된 bean 정의를 겹쳐 쓸 수 있습니다. 그것은 귀하의 애플 리케이션의 정적 어셈블리에 영향을 미칩니다 및 귀하의 질문에 제안 스레딩 / 클러스터링과 관련이 없습니다.

    DefaultListableBeanFactory를 사용하면 setAllowBeanDefinitionOverriding ()을 통해이 동작을 구성 할 수 있습니다.

  2. ==============================

    2.이는 특히 타사 bean의 구현을 변경하려고 할 때 유효합니다 (bean의 구현을 변경할 수없는 곳). 그리고 어디에서 추가 / 병합 속성을 제공 / 구성해야하는지 콩.

    이는 특히 타사 bean의 구현을 변경하려고 할 때 유효합니다 (bean의 구현을 변경할 수없는 곳). 그리고 어디에서 추가 / 병합 속성을 제공 / 구성해야하는지 콩.

    Bean의 재정의는 web.xml 또는 독립 실행 형을 통해 ApplicationContext를 작성하기 위해 제공 한 xml 순서에 따라 다릅니다. 최신 bean 정의가 게임에서 이길 것입니다.

  3. from https://stackoverflow.com/questions/10993181/defining-the-same-spring-bean-twice-with-same-name by cc-by-sa and MIT license