我正在设置类似SpringBootApplication Spring Boot提供的Spring“元注释”。我已经能够成功使用此约定设置ComponentScan和EnableAutoConfiguration注释,但是我无法将value属性成功传递给ImportResource。
以下是我想做的一个简单示例:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@ComponentScan(basePackages = {"com.my.package.example"})
@EnableAutoConfiguration
@ImportResource
public @interface MyMetaAnnotationExample {
String[] value() default {};
}
但是,编译器抱怨没有属性传递给ImportResource。当我尝试传递该属性时,我没有通过MyMetaAnnotationExample传递的值,因此我无法设置它们。
ComponentScan当然是有效的,因为这是需要硬编码的东西,但是ImportResource是需要传递值的东西。
答案 0 :(得分:2)
Spring Framework 4.2(由Spring Boot 1.3.x使用)放宽了对@ImportResource
的限制,因此您应该能够做到你想要的。
您可以在元注释上使用@AliasFor
来指定其value
属性应在value
上配置ImportResource
属性。例如:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@ComponentScan(basePackages = {"com.my.package.example"})
@EnableAutoConfiguration
@ImportResource
public @interface MyMetaAnnotationExample {
@AliasFor(annotation=ImportResource.class, attribute="value")
String[] value() default {};
}