【发布时间】:2021-02-09 05:32:36
【问题描述】:
我有多个关于如何实现/使用注释方法的问题。
我们如何利用限定符的方法?假设我有一个自定义 @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;
....
}
【问题讨论】:
-
“访问设备类型”是什么意思?从哪里访问? --- 我假设
AppStore是一个接口,并且你有多个实现类,每个类都用@Store注释。这些注释是否有元素deviceType,这意味着什么? -
所以这个例子只是为了理解这个概念。 deviceType 表示它是平板电脑还是手机。因为根据这些设备类型可能会有不同的应用商店实例。因此,我们可能有 iPadAppStore 和 iPhoneAppStore 的不同实例。
-
这就是
@Qualifier的value元素的用途,选择处理iPad和iPhone的AppStore实现。如果你只有一个apple实现,那么deviceType在代码中的什么地方使用?重复我的问题:访问deviceType从哪里?
标签: java spring annotations