2015-12-17 72 views
0

我正在設置類似於SpringBootApplication Spring Boot提供的Spring「元註釋」。我已經能夠使用這個約定成功地設置ComponentScan和EnableAutoConfiguration註解,但是我無法成功地將值屬性傳遞給ImportResource。有沒有人知道如何在「元註釋」中使用Spring的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

Spring框架4.2(在Spring 1.3.x的引導)放寬了對@ImportResource的限制,所以你應該可以做你想做的。

您可以使用@AliasFor你的元註釋指定其value屬性應該ImportResource配置value屬性。例如:

@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 {}; 
}