我正在使用Spring Boot(1.3.4.RELEASE),并且对4.2中引入的新@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)覆盖属性?
有人可以向我解释我在做什么错吗?
谢谢