복붙노트

[SPRING] 같은 이름이지만 다른 패키지에있는 2 개의 bean; 어떻게 그들을 autowire?

SPRING

같은 이름이지만 다른 패키지에있는 2 개의 bean; 어떻게 그들을 autowire?

동일한 이름을 가진 2 개의 bean을 가지고 있지만 다른 패키지에있는 어플리케이션이 있습니다. My Spring 애플리케이션은 어떤 Bean을 가져갈 지 결정할 수 없기 때문에 실패한다. 이것에 대한 해결책이 있습니까? 콩은 현재 특정 인터페이스를 구현하지 않습니다.

예외의 수정 된 예는 아래를 참조하십시오.

Caused by:
org.springframework.context.annotation.ConflictingBeanDefinitionException:
Annotation-specified bean name 'dataTransferHandler' for bean class
[aaaaa.ws.handler.DataTransferHandler] conflicts with existing,
non-compatible bean definition of same name and class
[bbbbb.ws.handler.DataTransferHandler]

해결법

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

    1.콩에 다른 이름을 주어야합니다. 여러 콩이 같은 이름으로 정의 된 경우, 나중에 정의 된 이름이 이전에 정의 된 이름보다 우선합니다. 따라서 하나의 bean만이 dataTransferHandler라는 이름으로 존재하게됩니다.

    콩에 다른 이름을 주어야합니다. 여러 콩이 같은 이름으로 정의 된 경우, 나중에 정의 된 이름이 이전에 정의 된 이름보다 우선합니다. 따라서 하나의 bean만이 dataTransferHandler라는 이름으로 존재하게됩니다.

    이 두 bean에 다른 이름을 부여 할 수 있으므로 둘 다 존재할 수 있으며 다음을 사용하여 올바른 이름으로 삽입 할 수 있습니다. @AutoWired @Qualifier ( "dataTransferHandler") 또는 @Resource (name = "dataTransferHandler")

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

    2.autowired 할 때 선호하는 bean defination에 attribute primary = "true"를 부여 할 수 있습니다. 그러나 bean 이름은 달라야합니다. 동일한 bean 이름에 대한 해결책은 없습니다.

    autowired 할 때 선호하는 bean defination에 attribute primary = "true"를 부여 할 수 있습니다. 그러나 bean 이름은 달라야합니다. 동일한 bean 이름에 대한 해결책은 없습니다.

    런타임에 autowired 클래스를 얻으면 기본 true bean은 autowiring에 대한 기본 설정을 갖게됩니다. 희망이 당신을 도와줍니다. 건배.

  3. from https://stackoverflow.com/questions/11015205/2-beans-with-same-name-but-in-different-packages-how-to-autowire-them by cc-by-sa and MIT license