




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
干货:SpringBoot中必须掌握的27个注解
SpringBoot方式的项目开发已经逐步成为Java应用开发领域的主流框架,它不仅可以便利地创建生产级的Spring应用程序,还能轻松地通过一些注解配置与目前比较火热的微服务框架SpringCloud集成。
而SpringBoot之所以能够轻松地实现应用的创建及与其他框架快速集成,最核心的缘由就在于它极大地简化了项目的配置,最大化地实现了“商定大于配置”的原则。然而基于SpringBoot虽然极大地便利了开发,但是也很简单让人“云里雾里”,特殊是各种注解很简单让人“知其然而不知其所以然。
所以,要想用好SpringBoot就必需对其供应的各类功能注解有一个全面而清楚地熟悉和理解。一方面可以提高基于SpringBoot的开发效率,另一方面也是面试中被问及框架原理时所必需要把握的学问点。在接下来的内容中,我就带大家一起来探究下SpringBoot的一些常用注解吧!
一、Spring相关6个基础注解
SpringBoot的有些注解也需要与Spring的注解搭配使用,这里我梳理了在项目中与SpringBoot注解协作最为紧密的6个Spring基础框架的注解。如
1、@Configuration
从Spring3.0,@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。
2、@ComponentScan
做过web开发的同学肯定都有用过@Controller,@Service,@Repository注解,查看其源码你会发觉,他们中有一个共同的注解@Component,没错@ComponentScan注解默认就会装配标识了@Controller,@Service,@Repository,@Component注解的类到spring容器中。
3、@Conditional
@Conditional是Spring4新供应的注解,通过@Conditional注解可以依据代码中设置的条件装载不同的bean,在设置条件注解之前,先要把装载的bean类去实现Condition接口,然后对该实现接口的类设置是否装载的条件。
SpringBoot注解中的@ConditionalOnProperty、@ConditionalOnBean等以@Conditional*开头的注解,都是通过集成了@Conditional来实现相应功能的。
4、@Import
通过导入的方式实现把实例加入springIOC容器中。可以在需要时将没有被Spring容器管理的类导入至Spring容器中。
5、@ImportResource
和@Import类似,区分就是@ImportResource导入的是配置文件。
6、@Component
@Component是一个元注解,意思是可以注解其他类注解,如@Controller@Service@Repository。带此注解的类被看作组件,当使用基于注解的配置和类路径扫描的时候,这些类就会被实例化。其他类级别的注解也可以被认定为是一种特别类型的组件。
比如@Controller掌握器(注入服务)、@Service服务(注入dao)、@Repositorydao(实现dao访问)。@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注,作用就相当于XML配置,beanid=class=/。
二、SpringBoot最核心的21个注解
说完与SpringBoot亲密相关的几个Spring基础注解后,下面我们就再一起看看SpringBoot供应的核心注解的内容吧!
1、@SpringBootApplication
这个注解是SpringBoot最核心的注解,用在SpringBoot的主类上,标识这是一个SpringBoot应用,用来开启SpringBoot的各项力量。实际上这个注解是@Configuration,@EnableAutoConfiguration,@ComponentScan三个注解的组合。由于这些注解一般都是一起使用,所以SpringBoot供应了一个统一的注解@SpringBootApplication。
2、@EnableAutoConfiguration
允许SpringBoot自动配置注解,开启这个注解之后,SpringBoot就能依据当前类路径下的包或者类来配置SpringBean。
如:当前类路径下有Mybatis这个JAR包,MybatisAutoConfiguration注解就能依据相关参数来配置Mybatis的各个SpringBean。
@EnableAutoConfiguration实现的关键在于引入了AutoConfigurationImportSelector,其核心规律为Imports方法,规律大致如下:
从配置文件META-INF/spring.factories加载全部可能用到的自动配置类;去重,并将exclude和excludeName属性携带的类排解;过滤,将满意条件(@Conditional)的自动配置类返回;
3、@SpringBootConfiguration
这个注解就是@Configuration注解的变体,只是用来修饰是SpringBoot配置而已,或者可利于SpringBoot后续的扩展。
4、@ConditionalOnBean
@ConditionalOnBean(A.class)仅仅在当前上下文中存在A对象时,才会实例化一个Bean,也就是说只有当A.class在spring的applicationContext中存在时,这个当前的bean才能够创建。
5、@ConditionalOnMissingBean
组合@Conditional注解,和@ConditionalOnBean注解相反,仅仅在当前上下文中不存在A对象时,才会实例化一个Bean。
6、@ConditionalOnClass
组合@Conditional注解,可以仅当某些类存在于classpath上时候才创建某个Bean。
7、@ConditionalOnMissingClass
组合@Conditional注解,和@ConditionalOnMissingClass注解相反,当classpath中没有指定的Class才开启配置。
8、@ConditionalOnWebApplication
组合@Conditional注解,当前项目类型是WEB项目才开启配置。当前项目有以下3种类型:ANY(任何Web项目都匹配)、SERVLET(仅但基础的Servelet项目才会匹配)、REACTIVE(只有基于响应的web应用程序才匹配)。
9、@ConditionalOnNotWebApplication
组合@Conditional注解,和@ConditionalOnWebApplication注解相反,当前项目类型不是WEB项目才开启配置。
10、@ConditionalOnProperty
组合@Conditional注解,当指定的属性有指定的值时才开启配置。详细操作是通过其两个属性name以及havingValue来实现的,其中name用来从perties中读取某个属性值,假如该值为空,则返回false;
假如值不为空,则将该值与havingValue指定的值进行比较,假如一样则返回true;否则返回false。假如返回值为false,则该configuration不生效;为true则生效。
11、@ConditionalOnExpression
组合@Conditional注解,当SpEL表达式为true时才开启配置。
12、@ConditionalOnJava
组合@Conditional注解,当运行的JavaJVM在指定的版本范围时才开启配置。
13、@ConditionalOnResource
组合@Conditional注解,当类路径下有指定的资源才开启配置。
14、@ConditionalOnJndi
组合@Conditional注解,当指定的JNDI存在时才开启配置。
15、@ConditionalOnCloudPlatform
组合@Conditional注解,当指定的云平台激活时才开启配置。
16、@ConditionalOnSingleCandidate
组合@Conditional注解,当指定的class在容器中只有一个Bean,或者同时有多个但为首选时才开启配置。
17、@ConfigurationProperties
SpringBoot可使用注解的方式将自定义的properties文件映射到实体bean中,比如perties文件。
18、@EnableConfigurationProperties
当@EnableConfigurationProperties注解应用到你的@Configuration时,任何被@ConfigurationProperties注解的beans将自动被Environment属性配置。这种风格的配置特殊适合与SpringApplication的外部YAML配置进行协作使用。
19、@AutoConfigureAfte
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 托人送离婚协议书
- 房屋到借用协议书
- 离婚分户口协议书
- 婚内搞投资协议书
- 签空白补偿协议书
- 生孩子术前协议书
- 合作社框架协议书
- 换热站通讯协议书
- 无子女子女协议书
- 气排球安全协议书
- 2025年中国冷库用叉车数据监测研究报告
- 2025年高考第二次模拟考试物理(浙江卷)(参考答案)-20250416-113627
- 2025年化妆师职业技能考试试题及答案
- GA 1812.1-2024银行系统反恐怖防范要求第1部分:人民币发行库
- 2025中信建投证券股份限公司校园招聘易考易错模拟试题(共500题)试卷后附参考答案
- 2025年山东省泰安市新泰市中考二模化学试题(原卷版+解析版)
- 2025年鸡蛋市场调查报告
- 2025年职业技能竞赛(计算机程序员赛项)参考试题(附答案)
- 合伙人商业保密协议书9篇
- 湖北省武汉市2025届高中毕业生四月调研考试语文试卷及答案(武汉四调)
- 2025年全国中小学生百科知识竞赛题库及答案(480题)
评论
0/150
提交评论