- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试实现细粒度 @Autowired
配置基本上使用 spring 文档中的示例:http://docs.spring.io/spring/docs/3.2.0.RELEASE/spring-framework-reference/html/beans.html#beans-autowired-annotation-qualifiers .
给定以下测试用例:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=ExampleConfiguration.class)
public class ExampleTest {
@Autowired @ExampleQualifier(key="x")
private ExampleBean beanWithQualifierKeyX;
@Test
public void test() {
System.out.println(this.beanWithQualifierKeyX);
}
}
和以下配置:
@Configuration
public class ExampleConfiguration {
@Bean
@ExampleQualifier(key = "x")
public ExampleBean exampleBean1() {
return new ExampleBean();
}
@Bean
@ExampleQualifier(key = "y")
public ExampleBean exampleBean2() {
return new ExampleBean();
}
@Bean
public ExampleBean exampleBean3() {
return new ExampleBean();
}
}
使用自定义限定符注释:
@Qualifier
@Retention(RetentionPolicy.RUNTIME)
public @interface ExampleQualifier {
String key();
}
我期望的是以下内容:属性 beanWithQualifierKeyX
应该使用配置类中的第一个 bean Autowiring 。配置上的注释和属性上的注释都有 key="x"
设置所以这应该是唯一的匹配。据我所知,这几乎与 MovieQualifier
相同来自 Spring 示例文档的注释。
但是,当我执行测试时,出现以下错误:
org.springframework.beans.factory.BeanCreationException:
Could not autowire field: private xxx.ExampleBean xxx.ExampleTest.beanWithQualifierKeyX;
nested exception is
org.springframework.beans.factory.NoSuchBeanDefinitionException:
No unique bean of type [xxx.ExampleBean] is defined:
expected single matching bean but found 2: [exampleBean1, exampleBean2]
看起来 Spring 确实对注释执行了匹配(因为 exampleBean1
和 exampleBean2
都被注释了)但没有考虑 key
的值注释的 - 否则 x
将是绝配。
我是不是在配置过程中遗漏了什么或者为什么没有匹配项?
我使用的 Spring 版本是 3.2.0.RELEASE
最佳答案
Spring 3.2.0 中存在/曾经存在错误 Autowiring with @Qualifier and @Qualifier meta annotation fails in Spring 3.2 (在 3.2.1 中修复)
它的描述听起来和你的问题一模一样。
所以更新到3.2.1
关于java - 细粒度的 Spring Autowiring 不起作用(@Autowired 带有额外的自定义注释),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21116561/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!