多用于spring源码中的注解
- @Target(ElementType.ANNOTATION_TYPE) 表明该注解作用域,参数类型为是类还是方法还是变量
- @Retention(RetentionPolicy.RUNTIME) 表里注解的存在时间,编译时运行时啥的
- @Documented 注解表明这个注解是由 javadoc记录的
- @Indexed 为注解添加的索引,好像能加载快一些
- @AliasFor 这个注解是为注解起别名,为了让名字一样的参数起到相同的作用,感觉能继承父注解的作用更大一些,如@AliasFor(annotation=MyAnnotation.class),这个可能我理解有偏差
- @ConditionalOnBean(仅仅在当前上下文中存在某个对象时,才会实例化一个Bean)
@ConditionalOnClass(某个class位于类路径上,才会实例化一个Bean)
@ConditionalOnExpression(当表达式为true的时候,才会实例化一个Bean)
@ConditionalOnMissingBean(仅仅在当前上下文中不存在某个对象时,才会实例化一个Bean)
@ConditionalOnMissingClass(某个class类路径上不存在的时候,才会实例化一个Bean)
@ConditionalOnNotWebApplication(不是web应用)
这些都是判断类型 - @Lazy 延迟加载
- @EnableAsync 为了@Async注解能生效,开启异步执行方法
- @EnableTransactionManagement 开启事务支持,然后在访问数据库的Service方法上添加注解 @Transactional 便可
- @EnableConfigurationProperties 使使用 @ConfigurationProperties 注解的类生效,如果一个配置类只配置@ConfigurationProperties注解,而没有使用@Component,那么在IOC容器中是获取不到properties 配置文件转化的bean
- @ServletComponentScan Servlet可以直接通过@WebServlet注解自动注册
Filter可以直接通过@WebFilter注解自动注册
Listener可以直接通过@WebListener 注解自动注册