2
我使用彈簧啓動(1.3.4.RELEASE),並有一個問題關於新@AliasFor註解推出春季4.2Spring框架AliasFor註釋兩難困境
框架考慮下面的註釋:
查看
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Component
public @interface View {
String name() default "view";
}
複合
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@View
public @interface Composite {
@AliasFor(annotation = View.class, attribute = "name")
String value() default "composite";
}
然後,我們標註一個簡單的類如下
@Composite(value = "model")
public class Model {
}
當運行下面的代碼
ConfigurableApplicationContext context = SpringApplication.run(App.class, args);
String[] beanNames = context.getBeanNamesForAnnotation(View.class);
for (String beanName : beanNames) {
View annotationOnBean = context.findAnnotationOnBean(beanName, View.class);
System.out.println(annotationOnBean.name());
}
我期待的輸出爲模式,但它是視圖。
從我的理解,不應該@AliasFor(除其他事項外)允許您覆蓋元註釋(在這種情況下@View)屬性? 有人可以向我解釋我做錯了什麼? 謝謝
我認爲你應該在代碼中使用'AnnotationUtils.synthesizeAnnotation()' – terjekid