繁体   English   中英

我们如何利用自定义的@Qualifier 方法?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM