元注解
注解 |
解释 |
@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全家桶注解概览/