Fix*_*int 4 java spring dependency-injection
我有一组以两个属性为特征的bean.它们基本上是针对不同类和不同目的的序列化器.
例如,可能有Order用于本地日志的Order序列化程序,用于记录webservice调用的Customer序列化程序,用于跟踪URL的Customer序列化程序和用于跟踪URL的序列化程序.
这就是为什么我想使用这样的两个@Qualifier注释:
@Autowired
@Qualifier("order")
@Qualifier("url")
private Serializer<Order> orderSerializer;
Run Code Online (Sandbox Code Playgroud)
不幸的是,编译器在这种情况下抱怨重复注释.是否有解决此问题的解决方法或替代解决方案?
nic*_*ild 12
我知道这个问题相当陈旧,但这是自Spring 2.5以来你应该能够完成的事情.
您可以使用@Qualifier一种注释组合形式创建自己注释的注释.春天会尊重这些资格赛,好像他们是自己的.
考虑这两个注释类型,命名与您的示例类似:
@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.TYPE, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Qualifier
public @interface MyOrderQualifier {
}
@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.TYPE, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Qualifier
public @interface MyUrlQualifier {
}
Run Code Online (Sandbox Code Playgroud)
您应该能够在您的字段上使用这两个注释,因为它们是独立的注释.
@Autowired
@MyOrderQualifier
@MyUrlQualifier
private Serializer<Order> orderSerializer;
Run Code Online (Sandbox Code Playgroud)
以下是解释此过程的Spring 2.5参考文档的链接.请注意,它适用于Spring 2.5,可能会因更新版本的Spring而过时.
@Qualifier("order-url")
Run Code Online (Sandbox Code Playgroud)
并分别命名您的组件 order-url
@Component("order-url")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8533 次 |
| 最近记录: |