1.5之后java帶來了注解.注解一般通過配置@Target,@Retention,@Documented就可以創建自己的注解了.
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface A{
}
如何使用注解? 我們知道可以通過java的反射機制來獲取到注解以及注解內容.但是今天看源碼時候突然發現一個很有意思的使用方法.
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Import(B.class)
public @interface A{
}
@Configuration
public class B{
class C{}
@Bean
public C enableC() {
return new C();
}
}
@Configuration
@ConditionalOnBean(B.C.class)
@Import({E.class,F.class})
public class D{
}
在spring中,
- 創建一個注解,該注解注入了一個Bean C,
- 如果用戶引用了該注解,則配置文件D中就會判斷是否已經存在C,
- 如果存在則加載E,F配置.
這樣就相當于用戶引入一個annotation就完成了EF的配置信息加載.(感覺我們只需要引入一個annotation就增加了一些特性)