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
|用来设置 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的那些注解

原文 

https://www.huangdayu.cn/2018/12/07/Spring全家桶注解概览/

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » Spring全家桶注解概览

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址