[英]How can we utilize the custom @Qualifier methods?
我有多个关于如何实现/使用注释方法的问题。
我们如何利用限定符的方法? 假设我有一个自定义@Qualifier
即。 @Store
代表一个 AppStore,有 2 个方法。 如何使用传递给DeviceType deviceType()
的值?
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Qualifier
public @interface Store {
String value();
DeviceType deviceType() default DeviceType.Phone;
public enum DeviceType{
Phone, Tablet;
}
}
@Qualifier
如何在内部使用String value()
来匹配名称? 创建自定义@Qualifier
时是否会被String value()
覆盖?
---更新信息如下---
我有一个包含 AppStore 类型字段的服务,该字段具有 @Autowired 和 @Store 注释。 获取 iPadAppStoreService 的 bean 后,如何访问注解中的 deviceType 传递?
@Service
public class iPadAppStoreService {
....
@Autowired(required=false)
@Store(value = "appleAppStore",
deviceType = DeviceType.Tablet)
private AppStore applicationStore;
....
}
我们如何利用限定符的方法?
你打电话给他们。
假设我有一个自定义
@Qualifier
即。@Store
代表一个 AppStore,有 2 个方法。 如何使用传递给DeviceType deviceType()
的值?
Store storeAnnotation = clazz.getAnnotation(Store.class);
DeviceType deviceType = storeAnnotation.deviceType();
其中clazz
是已用 @Store 注释的@Store
。
@Qualifier
如何在内部使用String value()
来匹配名称?
如果@Autowired
字段/方法/参数按类型找到多个候选者,并且还有一个@Qualifier
注释(或类似@Store
的派生注释),它将查找已使用@Qualifier
注释并具有匹配value
的候选类型元素。
创建自定义
@Qualifier
时是否会被String value()
覆盖?
是的, @Store
注释的处理方式与@Qualifier
注释相同,即其元素值的使用方式相同。 Spring 会忽略任何额外的元素值,并且只会被您添加的代码使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.