java - 我们如何利用自定义的@Qualifier 方法?
问题描述
我有多个关于如何实现/使用注释方法的问题。
我们如何利用限定符的方法?假设我有一个习惯,@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()
for 匹配名称?String value()
创建自定义时是否会覆盖相同的内容@Qualifier
?
---更新信息如下---
我有一个包含 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();
whereclazz
是一个用 注释的类@Store
。
内部如何
@Qualifier
使用String value()
for 匹配名称?
如果一个@Autowired
字段/方法/参数按类型找到多个候选,并且还有一个@Qualifier
注释(或派生的注释,如@Store
),它将查找已使用@Qualifier
匹配value
元素注释的候选类型。
String value()
创建自定义时是否会覆盖相同的内容@Qualifier
?
是的,@Store
注解的处理方式与@Qualifier
注解相同,即其元素值的使用方式相同。Spring 会忽略任何额外的元素值,并且只会被您添加的代码使用。
推荐阅读
- android - 如何解决 Android 上的“Lcom/sun/mail/util/MailLogger 解析失败”?
- objective-c - 从 Objective C 中的 React Native 包中读取文件
- r - 如何同时检查 NA 和相等性
- php - PHP比较2个多维数组并获得不匹配的项目
- reactjs - 带有提交按钮的 ComponentSearch
- java - 从 jsp 中的 SELECT OPTIONS 到 servlet 中获取多个选定的 VALUES
- macos - 如何使用 Mamp 中的本地网络 IP 地址从外部设备连接到 htdocs 文件夹
- javascript - 如何在graphql游乐场中打开跟踪面板
- python - 绿色网球台板上线的检测与隔离
- azure-devops - 使用 Katalon 扩展在 Azuredevops 管道上执行自动化测试时出现问题