[SPRING] Spring 빈 컨테이너 <import> 명령이 중복 컨테이너를 제거합니까?
SPRINGSpring 빈 컨테이너 명령이 중복 컨테이너를 제거합니까?
Spring 빈 컨테이너의
해결법
-
==============================
1.중복 된 "컨테이너"는 제거하지 않지만 중복 된 bean 정의를 제거합니다. 따라서 D에있는 빈은 생성 된 빈 팩토리에서 한 번만 생성됩니다. 당신은 그것에 대해 경고가 가득 찬 얼굴을 갖게 될 것입니다.
중복 된 "컨테이너"는 제거하지 않지만 중복 된 bean 정의를 제거합니다. 따라서 D에있는 빈은 생성 된 빈 팩토리에서 한 번만 생성됩니다. 당신은 그것에 대해 경고가 가득 찬 얼굴을 갖게 될 것입니다.
그것은 가장 피해야 할 것이 있습니다. 같은 ID를 가진 하나의 bean 정의는 그 bean의 유형과 특성이 같은지 여부에 관계없이 해당 bean 정의를 "숨 깁니다". 어느 쪽이 "숨겨 지는지"는 선언 순서에 달려 있습니다. 그것은 위험하기 때문에 스프링이 경고합니다.
-
==============================
2.스카프 만의 답을 확인하기 위해 GitHub에서 예제 프로젝트 봄 컨텍스트 가져 오기를 만들었습니다.
스카프 만의 답을 확인하기 위해 GitHub에서 예제 프로젝트 봄 컨텍스트 가져 오기를 만들었습니다.
$ mvn test . . . ------------------------------------------------------- T E S T S ------------------------------------------------------- Running ca.derekmahar.example.springContextImport.SpringContextImportTest 2011-03-15 16:25:44,980 545 [main] INFO o.springframework.test.context.TestContextManager - @TestExecutionListeners is not present for class [class ca.derekmahar.example.springContextImport.SpringContextImportTest]: using defaults. 2011-03-15 16:25:45,240 805 [main] INFO o.s.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from class path resource [spring-application-context.xml] 2011-03-15 16:25:45,417 982 [main] INFO o.s.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from class path resource [spring-application-context-a.xml] 2011-03-15 16:25:45,459 1024 [main] INFO o.s.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from class path resource [spring-application-context-b.xml] 2011-03-15 16:25:45,484 1049 [main] INFO o.s.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from class path resource [spring-application-context-d.xml] 2011-03-15 16:25:45,551 1116 [main] INFO o.s.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from class path resource [spring-application-context-c.xml] 2011-03-15 16:25:45,585 1150 [main] INFO o.s.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from class path resource [spring-application-context-d.xml] 2011-03-15 16:25:45,610 1175 [main] INFO o.s.b.factory.support.DefaultListableBeanFactory - Overriding bean definition for bean 'd': replacing [Generic bean: class [ca.derekmahar.example.springContextImport.bean.D]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in class path resource [spring-application-context-d.xml]] with [Generic bean: class [ca.derekmahar.example.springContextImport.bean.D]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in class path resource [spring-application-context-d.xml]] 2011-03-15 16:25:45,652 1217 [main] INFO o.s.context.support.GenericApplicationContext - Refreshing org.springframework.context.support.GenericApplicationContext@105738: startup date [Tue Mar 15 16:25:45 EDT 2011]; root of context hierarchy 2011-03-15 16:25:45,895 1460 [main] INFO o.s.b.factory.support.DefaultListableBeanFactory - Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@18825b3: defining beans [d,b,c,a,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor]; root of factory hierarchy 2011-03-15 16:25:45,895 1460 [main] INFO ca.derekmahar.example.springContextImport.bean.C - Created D 2011-03-15 16:25:45,979 1544 [main] INFO ca.derekmahar.example.springContextImport.bean.B - Created B 2011-03-15 16:25:45,996 1561 [main] INFO ca.derekmahar.example.springContextImport.bean.C - Created C 2011-03-15 16:25:46,005 1570 [main] INFO ca.derekmahar.example.springContextImport.bean.A - Created A 2011-03-15 16:25:46,038 1603 [main] INFO ca.derekmahar.example.springContextImport.bean.A - Running A 2011-03-15 16:25:46,038 1603 [main] INFO ca.derekmahar.example.springContextImport.bean.B - Running B 2011-03-15 16:25:46,038 1603 [main] INFO ca.derekmahar.example.springContextImport.bean.C - Running D 2011-03-15 16:25:46,038 1603 [main] INFO ca.derekmahar.example.springContextImport.bean.C - Running C 2011-03-15 16:25:46,038 1603 [main] INFO ca.derekmahar.example.springContextImport.bean.C - Running D Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.846 sec
스카프맨이 예측 한대로 "d '에 플래그를 지정하는"bean'd "에 대한"Overriding bean definition "메시지에 주목하십시오.
from https://stackoverflow.com/questions/5302980/does-the-spring-bean-container-import-command-eliminate-duplicate-containers by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Jersey 저지 - * 종속성이 추가 될 때 WebApplication 공급자가 존재하지 않습니다. (0) | 2019.05.06 |
---|---|
[SPRING] 봄을 사용하여 비동기 및 동기화 이벤트 게시자를 구성하는 방법 (0) | 2019.05.06 |
[SPRING] spring3 @Value를 사용하여 PropertyPlaceholderConfigurer 값에 액세스 하시겠습니까? (0) | 2019.05.06 |
[SPRING] jQuery를 사용하여 Spring 3 컨트롤러에 JSON 객체 게시하기 (0) | 2019.05.06 |
[SPRING] Spring Framework에서 @PostConstruct로 초기화하면 객체 속성을 휘발성으로 표시해야합니까? (0) | 2019.05.06 |