gpt4 book ai didi

@Service 和@Autowired 注释的 Java/Spring 问题

转载 作者:搜寻专家 更新时间:2023-10-31 20:15:46 27 4
gpt4 key购买 nike

[ Spring 3.0.5][jboss 5.1]

我有几个标记为 @Service 的类,它们实现了相同的接口(interface)。

例如,

@Service(value="test1") 
public TestImpl1 implements Test {}
@Service(value="test2")
public TestImpl2 implements Test {}

接下来,我有如下结构

public SomeClass { 
@Autowired
@Qualifier("test1")
Test test1;
@Autowired
@Qualifier("test2")
Test test2;

我遇到异常(在部署时)

10:36:58,277 ERROR [[/test-web]] Servlet /test-web threw load() 
exception
org.springframework.beans.factory.NoSuchBeanDefinitionException: No
unique bean of type [pl.tests] is defined: expected single matching
bean but found 2: [test1, test2]
at
org.springframework.beans.factory.support.DefaultListableBeanFactory.doReso lveDependency(DefaultListableBeanFactory.java:
796)
at
org.springframework.beans.factory.support.DefaultListableBeanFactory.resolv eDependency(DefaultListableBeanFactory.java:
703)
at
org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostPro cessor
$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:
474)

有人知道怎么解决吗?

T.

最佳答案

几个选项:

  • 使用@Resource(name="test1")在注入(inject)点
  • 可以使用javax.inject.Qualifer机制。简而言之 - 您定义一个注释 ( @Test ) 并使用 @Qualifier 注释该注释.然后使用 @Autowired @Test在注入(inject)点上。
  • 在目标 bean 上显式设置限定符。文档说只显示 xml 版本 <qualifier /> , 但尝试添加 @Qualifier("test1")关于服务定义

Here is the documentation about it

关于@Service 和@Autowired 注释的 Java/Spring 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4968680/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com