2个具有相同名称但位于不同包中的bean; 如何自动装配它们?

Mar*_*rco 11 spring inversion-of-control autowired

我有一个应用程序有2个同名的bean,但它们在不同的包中.我的Spring应用程序失败,因为它无法决定采用哪个bean.这有什么解决方案吗?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]
Run Code Online (Sandbox Code Playgroud)

Bij*_*men 19

你必须给你的bean提供不同的名字 - 如果用同一个名字定义多个bean,那么后面定义的bean将覆盖之前定义的那个 - 所以在你的情况下只有一个bean存在,名字为dataTransferHandler.

你可以给这两个bean提供不同的名称,这样两者都可以存在,你可以使用:@AutoWired @Qualifier("dataTransferHandler") OR 注入正确的bean @Resource(name="dataTransferHandler")

  • 不,是 bean 名称 - 如果您明确将其命名为 `<bean name="aName"..>`,或者您使用注释 `@Service("aName")`。在你的情况下,虽然这两个豆子具有相同的名称,但它们是不同的类型,对吧 (2认同)