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

标签 java spring annotations javabeans

[ 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/

相关文章:

java - 如何使用 Apache POI 设置单元格背景?

java - 如何在不更改注释的情况下禁用 Hibernate 中某些特定实体的二级缓存

java - AOP 注释 - 在方法级别工作,而仅对类进行注释

java - MyEclipse 不会将 jars 部署到 WEB-INF/lib 目录中

Java YUI Javascript-Compressor 错误

java - 如何访问存储在 observableList 中的一堆元素(在我的例子中为 Gridpane 类型)?

java - Spring 数据 Neo4j : do I need a index for each inherited class?

java - 序列化后连接变量的干净方法?

java - 我可以告诉 spring 忽略查询参数吗?

ios - skmaps 通过更新 SKAnnotation 来解决巨大的内存泄漏