【SpringBoot 2】(五)自动配置简析源码 开发中小技巧

写在前面在这里插入图片描述🛫更多知识总结见SpringBoot 2专栏
🚕本篇知识点总结自尚硅谷雷神的视频
🚒博主对于该知识尚在学习阶段
🚄如果发现存在问题请毫不吝啬的指出
🚀🚀扎哇太枣糕的博客首页🚀🚀

文章目录

  • 1 自动配置底层分析
    • 1.1 ​自动配置注解解析
    • 1.2 修改默认配置
    • 1.3 总结
    • 1.4 最佳实践
  • 2 开发小技巧
    • 2.1 Lombok简化开发
    • 2.2 伪热更新
    • 2.3 创建Spring Initailizr项目

1 自动配置底层分析

1.1 ​自动配置注解解析

@SpringBootApplication注解是SpringBoot的核心注解,他是由以下三个注解总和而成.

  • @SpringBootConfiguration
    该注解底层有一个@Configuration注解,标明当前类是一个配置类
  • @EnableAutoConfiguration该注解又由以下两个注解组合而成
    • @AutoConfigurationPackage:底层使用@Import({Registrar.class})向容器中注册组件,Registrar.class里获取到主程序所在的包并将包下的所有组件导入进来,这也就间接说明了SpringBoot的默认包扫描规则: 主程序(MainApplication)所在的包及这个包的所有子包都会被扫描
      在这里插入图片描述
    • @Import(AutoConfigurationImportSelector.class):AutoConfigurationImportSelector.class下有一个selectImports方法,方法里面又使用getAutoConfigurationEntry内部的getCandidateConfigurations方法获取需要注册的组件都有哪些,getCandidateConfigurations方法里面使用SpringFactoriesLoader.loadFactoryNames内层的loadSpringFactories方法里的getResources(“META-INF/spring.factories”)默认扫描当前系统里面所有jar包META-INF/spring.factories位置下的文件。后面发现spring-boot-autoconfigure-2.3.4.RELEASE.jar包里面也有META-INF/spring.factories文件,文件里面有个EnableAutoConfiguratio配置项写死了spring-boot一启动就要给容器中加载的所有配置类。虽然我们127个场景中自动配置启动的时候默认全部加载所有的xxxxAutoConfiguration,但是最终按照条件装配规则(@Conditional)按需配置。在这里插入图片描述
  • @ComponentScan
    这个注解定义了包扫描的规则

1.2 修改默认配置

  SpringBoot默认会在底层配好所有的组件,但是如果用户自己配置了以用户的优先。使用@ConditionalOnMissingBean注解判断容器中是否存在该组件的话就使用默认的类进行配置

1.3 总结

● SpringBoot先通过xxxxxAutoConfiguration加载所有的自动配置类
● 每个自动配置类按照条件进行生效,默认都会绑定配置文件指定的值,这个值就在xxxxProperties里面拿,xxxProperties和配置文件进行了绑定。
● 生效的配置类就会给容器中装配很多组件
● 只要容器中有这些组件,相当于这些功能就有了
● 定制化配置
  ○ 用户直接自己@Bean替换底层的组件
  ○ 在创建的配置文件中使用配置项修改默认的配置信息。比如说配置字符编码格式在HttpEncodingAutoConfiguration里的注解中可以得知在这里插入图片描述

xxxxxAutoConfiguration —> 组件 —>
xxxxProperties里面拿值 ----> application.properties

1.4 最佳实践

  根据上述自动配置原理总结SpringBoot的最佳项目实践流程

  • 引入场景依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
  • 查看自动配置了哪些组件
    • 默认场景对应的自动配置一般都生效
    • 配置文件中debug=true开启自动配置报告,其中Positive(生效组件)、Negative(不生效组件)以及会显示不生效的原因是什么没有匹配到
  • 修改配置项
    • 参考文档:SpringBoot可能会用到的所有配置项
    • 按照前面的定制化方式自己分析
  • 组件修改
    • @Bean、@Component……注解
      …………业务流程

2 开发小技巧

2.1 Lombok简化开发

第一步: 导入依赖(由于starter启动器中已经配置了版本,于是可以不去再次进行设置)

<dependency> 	<groupId>org.projectlombok</groupId> 	<artifactId>lombok</artifactId>
</dependency> 

第二步: 搜索安装lombok插件 在这里插入图片描述
第三步: 使用注解进行开发

  • JavaBean的注解 使用注解并不会直接自动生成代码,而是在编译期间将注解的方法补上。而且如果需要使用多参但不全构造器的话,没有注解可以完成,需要自己在源码上手写

    • @NoArgsConstructor: 无参构造器
    • @AllArgsConstructor: 全参构造器
    • @ToString: 全参数的toString方法
    • @Data: getter和setter方法在这里插入图片描述
  • 生成日志

    • 类上加注解@Slf4j
    • log.info方法打印日志在这里插入图片描述

2.2 伪热更新

第一步: 导入依赖

<dependency> 	<groupId>org.springframework.boot</groupId> 	<artifactId>spring-boot-devtools</artifactId><optional>true</optional>
</dependency> 

第二步: 使用热更新功能,在项目源码中更新了代码,不需要重启服务器,直接使用Ctrl+F9刷新项目信息,就可以使用更新之后的代码了。静态页面的改变使用Ctrl+F9,就是在服务器中直接更新页面信息,其他的信息改变就相当于使用按钮重启项目。如果想要实现不需任何操作就实时更新的话可以使用JRebel,但是缺点就是收费。

2.3 创建Spring Initailizr项目

  这个小技巧就是在使用IDEA的企业版开发的时候,直接创建一个springBoot项目,还可以自定义项目中所需要的技术,创建完成之后就会自动生成SpringBoot项目相应的主程序类、pom.xml文件等在这里插入图片描述
右键创建项目的时候选择Spring Initailizr,主要就是勾选自己需要的技术在这里插入图片描述效果:在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/535104.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jar包导出无法显示图片或者音乐_如何制作图片视频短片,配上音乐闪耀朋友圈!...

把图片制作成视频短片&#xff0c;再配上一首好听的音乐&#xff0c;发到朋友圈&#xff0c;不仅可以更具创意的分享自己的生活点滴&#xff0c;更能因您的创意获得一大票的赞哦&#xff01;看到别人分享自己制作的图片视频短片&#xff0c;是不是心痒痒也想做一个呢&#xff1…

【SpringBoot 2】(六)配置文件 web开发相关

写在前面&#x1f6eb;更多知识总结见SpringBoot 2专栏 &#x1f695;本篇知识点总结自尚硅谷雷神的视频 &#x1f692;博主对于该知识尚在学习阶段 &#x1f684;如果发现存在问题请毫不吝啬的指出 &#x1f680;&#x1f680;扎哇太枣糕的博客首页&#x1f680;&#x1f680;…

deepl windows_推荐一个为程序员深度开发的翻译插件DeepL

DeepL深度翻译器DeepL一个程序员的翻译神器&#xff0c;可能有人要问&#xff0c;市面上这么多的翻译插件这么多&#xff0c;我为毛要用你的。首先这个翻译神器可以实现多个翻译引擎的翻译&#xff0c;目前支持有道和google&#xff0c;下一步我会把最近特别流行的翻译软件Deep…

再次携号转网_陕西通信管理局:对移动公司拒绝对用户提供携号转网服务的违法行为处罚!...

据陕西省通信管理局网站11月25日消息&#xff0c;陕西省通信管理局25日发出《关于中国移动西安分公司无正当理由拒绝对用户提供携号转网服务调查处理情况的通报》称&#xff0c;近期&#xff0c;省通信管理局对中国移动西安分公司(以下简称西安移动)无正当理由拒绝对用户提供携…

【SpringBoot 2】(七)请求处理——映射 常用注解 方法参数的小技巧

写在前面&#x1f6eb;更多知识总结见SpringBoot 2专栏 &#x1f695;本篇知识点总结自尚硅谷雷神的视频 &#x1f692;博主对于该知识尚在学习阶段 &#x1f684;如果发现存在问题请毫不吝啬的指出 &#x1f680;&#x1f680;扎哇太枣糕的博客首页&#x1f680;&#x1f680;…

北方人思想为什么落后_广西人为什么很少到北方打工?

广西虽然山青水秀&#xff0c;环境优美&#xff0c;但目前还是个经济欠发达的地区&#xff0c;很多人在本地很难找到合适的工作&#xff0c;所以纷纷选择外出打工了&#xff0c;包括我自己。在广西外出打工的人群当中&#xff0c;绝大部分人都去了广东&#xff0c;当然&#xf…

刷网络课_网络营销实践心得—刘荟萌

一、实践时间2020.9.1~2020.12.25二、实践内容1、实践资源准备&#xff1a;实践平台账号注册、了解相关网站的使用方法。2、认识网络营销系统&#xff1a;企业网络营销信息源类别及传递渠道调查。3、信息源构建&#xff1a;微信公众号运营、新媒体平台运营(微博、博客)4、网络推…

【SpringBoot 2】(八)数据响应 页面响应

写在前面&#x1f6eb;更多知识总结见SpringBoot 2专栏 &#x1f695;本篇知识点总结自尚硅谷雷神的视频 &#x1f692;博主对于该知识尚在学习阶段 &#x1f684;如果发现存在问题请毫不吝啬的指出 &#x1f680;&#x1f680;扎哇太枣糕的博客首页&#x1f680;&#x1f680;…

2020年最快的dns_2020年哪里换旅行证最快取证?需要几天?

关注我的都知道了很多的实用攻略你还在等什么~美妈不论去哪个地方更换旅行证&#xff0c;都喜欢问“这个地方是否可以加急&#xff1f;”“最快几天可以拿到新的旅行证&#xff1f;”今天就来整理一下2020年各地换证需要几天&#xff0c;是否可以加急。"目前更换旅行证有两…

语句拼接_Linux 进阶语句

日常工作需要用到&#xff0c;shell语句用于分析定位生产问题&#xff0c;本次做个记录# 将日志先拷贝到当前目录cp /tmp/nginx.log .本次目标是&#xff1a; 找出log中的404 500的报错#使用管道取出相关日志less nginx.log 通过/ 查询得知 状态码处于第9个字段#使用 awk 筛选出…

【SpringBoot 2】(九)异常处理 web原生组件的注入

写在前面&#x1f6eb;更多知识总结见SpringBoot 2专栏 &#x1f695;本篇知识点总结自尚硅谷雷神的视频 &#x1f692;博主对于该知识尚在学习阶段 &#x1f684;如果发现存在问题请毫不吝啬的指出 &#x1f680;&#x1f680;扎哇太枣糕的博客首页&#x1f680;&#x1f680;…

项目管理最佳实践方法_项目管理最佳实践,企业如何进行有效的项目管理

前言&#xff1a;企业在划分项目时&#xff0c;可按照项目的复杂程度、管理范围等将项目分为三个级别&#xff0c;分别是企业级、部门级和小组级&#xff08;与目标划分原则相同&#xff09;&#xff0c;然后将每一级的目标与项目对应起来。我们知道&#xff0c;企业制定的目标…

【SpringBoot 2】(十)数据库相关

写在前面&#x1f6eb;更多知识总结见SpringBoot 2专栏 &#x1f695;本篇知识点总结自尚硅谷雷神的视频 &#x1f692;博主对于该知识尚在学习阶段 &#x1f684;如果发现存在问题请毫不吝啬的指出 &#x1f680;&#x1f680;扎哇太枣糕的博客首页&#x1f680;&#x1f680;…

【SpringBoot 2】(十一)单元测试JUnit 5 指标监控

写在前面&#x1f6eb;更多知识总结见SpringBoot 2专栏 &#x1f695;本篇知识点总结自尚硅谷雷神的视频 &#x1f692;博主对于该知识尚在学习阶段 &#x1f684;如果发现存在问题请毫不吝啬的指出 &#x1f680;&#x1f680;扎哇太枣糕的博客首页&#x1f680;&#x1f680;…

多个containers 共用一个pvc_2020阜新PVC-UH市政管厂家-烟台塑胶

2020阜新PVC-UH市政管厂家烟台金沃泉塑胶有限公司主要产品PVC-U、PVC-M、PVC-UH聚氯乙烯给给水管材、HDPE高密度聚乙烯给水管材、CPVC氯化聚氯乙烯、MPP高压电力电缆护套管、PERT-Ⅱ型热力管道、高分子托辊管、水处理膜壳管。公司为电网、南方电网、电建集团、建筑集团、五矿集…

【SpringBoot 2】(十二) profile功能 自定义starter

写在前面&#x1f6eb;更多知识总结见SpringBoot 2专栏 &#x1f695;本篇知识点总结自尚硅谷雷神的视频 &#x1f692;博主对于该知识尚在学习阶段 &#x1f684;如果发现存在问题请毫不吝啬的指出 &#x1f680;&#x1f680;扎哇太枣糕的博客首页&#x1f680;&#x1f680;…

pb 怎么判断是 小数_考试90分以上的孩子是怎么学数学的?听听老师怎么说?

一二年级&#xff0c;考试上九十分很轻松。但是&#xff0c;不少小朋友一上三年级&#xff0c;成绩就落下来了。那么&#xff0c;我们来看看三年级起&#xff0c;考试还能够保持在90分以上的孩子是怎么学习数学的吧&#xff01;第一&#xff0c;计算能力过关通过这两张图片的对…

快速上手Mybatis-Plus 入门案例

写在前面&#x1f6eb;更多知识总结见Mybatis-Plus专栏 &#x1f695;内容总结自尚硅谷杨博超老师的视频 &#x1f692;博主对于该知识尚在学习阶段 &#x1f684;如果发现存在问题请毫不吝啬的指出 &#x1f680;&#x1f680;扎哇太枣糕的博客首页&#x1f680;&#x1f680;…

黑苹果 选择语言 点不了_什么是天然的“黑钻”?—科普贴

天然黑钻也被成为“碳酸氢”&#xff0c;具有与白钻相同的化学成分&#xff0c;然而黑钻石的晶体结构是不同的&#xff0c;这意味着它们由许多小晶体组成&#xff0c;它们以随机的形式粘在一起&#xff0c;而不是一个具有可识别自然线的固体锥形。天然黑钻石有极高的含物&#…

sim卡没坏但苹果手机无服务_解决手机插SIM卡后都显示“无SIM卡”的故障问题

故障现象顾客描述手机插SIM卡后都显示“无SIM卡”。维修过程引起插入SIM卡却显示“无SIM卡”的故障&#xff0c;除了可能是SIM卡座的供电、时钟、复位及SIM卡插入检测信号不正常导致外&#xff0c;还有可能是基带不正常导致的。插上手机卡&#xff0c;左上角提示“无SIM卡”&am…