转载

Spring全家桶注解概览

元注解

注解 解释
@Documented javadoc文档中列出被此注解注解的元素
@Target 注解能被应用的目标元素,比如类、方法、属性、参数等等
@Retention 仅在源码保留,还是保留到编译后的字节码,还是到运行时也去加载
@Inherited 如果子类没有定义注解的话,能自动从父类获取定义了继承属性的注解
@Repeatable 通过关联注解容器定义可重复注解
@Native 是否在.h头文件中生成被标记的字段,原生程序需要和Java程序交互

SpringCore 注解

注解 解释
@Controller 定义表现层组件
@Service 定义业务逻辑层组件
@Repository 定义数据访问层资源库组件
@Component 定义其它组件(比如访问外部服务的组件)
@Autowired 自动装配 Bean (默认按类型装配 byType
@Required 用于在 setter 方法标记属性值需要由 Spring 进行装配
@Qualifier 用于通过给 Bean 定义修饰语来注入相应的Bean
@Resource 自动装配 Bean (默认按照名称进行装配 byName
@Value 用于注入属性配置或SpEL表达式
@Lookup 可以实现方法注入(注入的对象是 Prototype 生命周期,每次 new 一个出来)
@EnableTransactionManagement 用于开启事务管理
@Transactional 用于开启事务以及设置传播性、隔离性、回滚条件等
@TransactionalEventListener 用于配置事务的回调方法(事务提交前、提交后、完成后,回滚后)
@Order 注解可以设置 Spring 管理对象的加载顺序
@AliasFor 注解可以设置一组注解属性相互作为别名

SpringContext 注解

注解 解释
@Configuration 用于标注配置类,启用Java配置方式的Bean配置
@Bean 用于配置一个 Bean
@ComponentScan 用于扫描包方式配置 Bean
@ComponentScans 用于配置一组 @ComponentScan
@PropertySource 用于导入配置文件
@PropertySources 用于配置一组 @PropertySource
@Conditional 用于设置关联的条件类,在合适的时候启用 Bean 的配置
@Import 用于导入其它配置类
@ImportResource 用于导入非Java配置方式的 XML 配置
@Profile 用于指定在合适的 Profile 下启用配置
@Lazy 用于告知容器延迟到使用的时候实例化 Bean (默认情况下容器启动的时候实例化Bean来检查所有的问题)
@Description 用于给Bean设置描述
@Scope 用于设置Bean的生命周期
@Primary 用于在定义了多个Bean的时候指定首选的Bean
@EventListener 用于设置回调方法监听Spring制定的以及自定义的各种事件
@EnableAspectJAutoProxy 用于开启支持 AspectJ@Aspect 切面配置支持

SpringMVC 注解

|注解|解释| |:—-|:—| | @RequestScope | Bean 特殊生命周期的复合注解(需要 Bean 跟随 请求 声明周期)| | @SessionScope | Bean 特殊生命周期的复合注解(需要 Bean 跟随 会话 声明周期)| | @ApplicationScope | Bean 特殊生命周期的复合注解(需要 Bean 跟随 应用程序 的声明周期)| | @RequestMapping |用于配置 Http 请求路径参数等,手动配置 HttpMethod | | @PostMapping |基于 @RequestMapping 的复核注解, HTTPPOST请求| |**@GetMapping**|基于 @RequestMapping 的复核注解, HTTPGET 请求| |**@DeleteMapping**|基于 @RequestMapping 的复核注解, HTTPDELETE请求| | @PutMapping |基于 @RequestMapping 的复核注解, HTTPPUT 请求| | @ResponseStatus |可用到方法或异常上,请求得到响应代码| | @ExceptionHandle |可用到方法或异常上,请求得到异常原因,可以进行统一的全局异常处理| | @ResponseBody |把返回内容(序列化后)输出到请求体, @RestController 常用| | @RequestBody |从请求体获取参数(处理复杂数据,比如 JSON )| | @RequestHeader |从请求头获取参数获取参数| | @CookieValue |从 cookie 中获取参数| | @SessionAttribute |从会话中获取参数| | @RequestAttribute |从请求的 Attribute 中(过滤器和拦截器手动设置的一些临时数据)| | @RequestParam |从请求参数(处理简单数据,键值对)| | @PathVariable |从路径片段中获取参数| | @MatrixAttribute |矩阵变量允许我们采用特殊的规则在URL路径后加参数(分号区分不同参数,逗号为参数增加多个值)| | @ControllerAdvice |允许我们在集中的地方配置控制器,相当于为 @ExceptionHandler 加上了 @ResponseBody | | @RestControllerAdvice |和 @ControllerAdvice 类似| | @InitBinder |用来设置 WebDataBinderWebDataBinder 用来自动绑定前台请求参数到 Model 中| | @ModelAttribute |让全局的@RequestMapping都能获得在此处设置的键值对| | @CrossOrigin |用到 @ControllerMethod 上(需要配合 @RequestMapping )设置细粒度的跨域行为|

SpringBoot 注解

注解 解释
@ConfigurationProperties 配合 @EnableConfigurationProperties 注解来设置需要启用的配置类,用来自定义配置类和配置文件进行关联
@EnableConfigurationProperties 启动自定义配置
@DeprecatedConfigurationProperty 用于标记废弃的配置以及设置替代配置和告知废弃原因
@ConfigurationPropertiesBinding 用于指定自定义的转换器用于配置解析的时的类型转换
@NestedConfigurationProperty 用于关联外部的类型作为嵌套配置类
@EnableAutoConfiguration 可以启用自动配置
@SpringBootApplication 复合注解, SpringBoot 启动注解
@AutoConfigureOrder 用于设置自动配置类加载顺序,以及精确控制加载依赖关系(值越小优先级越高)
@AutoConfigureAfter 在指定的配置类初始化后再加载
@AutoConfigureBefore 在指定的配置类初始化前加载
@ConditionalOnBean 用于仅当容器中已经包含指定的Bean类型或名称时才匹配条件
@ConditionalOnClass 仅当 classpath 上存在指定类时条件匹配
@ConditionalOnCloudPlatform 仅当指定的云平台处于活动状态时条件匹配
@ConditionalOnExpression 依赖于 SpEL 表达式的值的条件元素的配置注解
@ConditionalOnJava 基于应用运行的JVM版本的条件匹配
@ConditionalOnJndi 基于 JNDI 可用和可以查找指定位置的条件匹配
@ConditionalOnMissingBean 仅当容器中不包含指定的Bean类型或名称时条件匹配
@ConditionalOnMissingClass 仅当 classpath 上不存在指定类时条件匹配
@ConditionalOnNotWebApplication 仅当不是 WebApplicationContext (非 Web 项目)时条件匹配
@ConditionalOnWebApplication 仅当是 WebApplicationContextWeb 项目)时条件匹配
@ConditionalOnProperty 是检查指定的属性是否具有指定的值
@ConditionalOnResource 示仅当 classpath 上存在指定资源时条件匹配
@ConditionalOnSingleCandidate 仅当容器中包含指定的Bean类并且可以判断只有单个候选者时条件匹配
@Conditional 关联到自己实现的 SpringBootCondition

SpringCloud 注解

注解 解释
@EnableXXX 开启某个功能
@RibbonClient 这个注解用来为负载均衡客户端做一些自定义的配置
@SpringCloudApplication 复合注解, SpringCloud 启动注解
@LoadBalanced 用于和 RestTemplate 配合使用构成一个负载均衡的 Http 客户端,实现原理上其实这个注解是一个 @Qualifier 注解
@SpanName 手动设置span的名称

1.元注解,也就是注解的注解 2. Spring 容器相关的一些注解,包括 @Qualifier@AliasFor@Order 等看似不重要但其实很重要的注解 3. Spring Java 配置相关的一些注解,包括条件注解 4. SpringBoo t自动配置相关的一些注解 5.很多注解可以同时应用到类型、方法、参数上,有的时候应用到不同的地方作用会略微不一样,这个需要重点关注

参考文档

朱晔和你聊Spring系列S1E9:聊聊Spring的那些注解

原文  https://www.huangdayu.cn/2018/12/07/Spring全家桶注解概览/
正文到此结束
Loading...