Spring全家桶注解概览

综合编程 2018-12-07 阅读原文

元注解

注解解释
@Documentedjavadoc文档中列出被此注解注解的元素
@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
|用来设置 WebDataBinder
WebDataBinder
用来自动绑定前台请求参数到 Model
中|
| @ModelAttribute
|让全局的@RequestMapping都能获得在此处设置的键值对|
| @CrossOrigin
|用到 @Controller
Method
上(需要配合 @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 仅当是 WebApplicationContext
Web
项目)时条件匹配
@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的那些注解

责编内容by:大鱼叔叔的个人博客 【阅读原文】。感谢您的支持!

您可能感兴趣的

聊聊Dubbox(一):为何选择 1. 前言 随着现在互联网行业的发展,越来越多的框架、中间件、容器等开源技术不断地涌现,更好地来服务于业务,解决实现业务的问题。然而面对众多的技术选择,我们要如何甄别出适合自己团队业务的技术呢?对于人来说,鞋子过大,可能影响奔跑的...
Spring Modular Architecture In a previous article Introduction to String , we discussed What is Spring and why it so popular among Java developers ...
Java-注解(@Annotation) 一、缘由 上篇也提到过要开spring cloud系列,但是避免不了就是spring boot,那针对这个我们首先要明白的就是spring boot启动到底帮我做了那些事,明白这些我们后面使用起来的时候就会得心应手,但是你...
Spring(3)——装配 Spring Bean 详解 装配 Bean 的概述 前面已经介绍了 Spring IoC 的理念和设计,这一篇文章将介绍的是如何将自己开发的 Bean 装配到 Spring IoC 容器中。 大部分场景下,我们都会使用 ApplicationCont...
配置Spring项目上传的两种方式(全解析)... 欢迎查看 Java开发之上帝之眼系列教程 ,如果您正在为Java后端庞大的体系所困扰,如果您正在为各种繁出不穷的技术和各种框架所迷茫,那么本系列文章将带您窥探Java庞大的体系。本系列教程希望您能站在上帝的角度去观察(了解)Java...