千家信息网

SpringBoot2自动配置底层的方法

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,今天小编给大家分享一下SpringBoot2自动配置底层的方法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下
千家信息网最后更新 2025年11月07日SpringBoot2自动配置底层的方法

今天小编给大家分享一下SpringBoot2自动配置底层的方法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

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的最佳项目实践流程

引入场景依赖

      org.springframework.boot    spring-boot-starter-web

查看自动配置了哪些组件

  • 默认场景对应的自动配置一般都生效

  • 配置文件中debug=true开启自动配置报告,其中Positive(生效组件)、Negative(不生效组件)以及会显示不生效的原因是什么没有匹配到

修改配置项

  • 参考文档:SpringBoot可能会用到的所有配置项

  • 按照前面的定制化方式自己分析

组件修改

@Bean、@Component……注解

…………业务流程

2 开发小技巧

2.1 Lombok简化开发

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

              org.projectlombok           lombok

第二步: 搜索安装lombok插件

第三步: 使用注解进行开发

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

  • @NoArgsConstructor: 无参构造器

  • @AllArgsConstructor: 全参构造器

  • @ToString: 全参数的toString方法

  • @Data: getter和setter方法

生成日志

  • 类上加注解@Slf4j

  • log.info方法打印日志

2.2 伪热更新

第一步: 导入依赖

             org.springframework.boot            spring-boot-devtools        true

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

2.3 创建Spring Initailizr项目

  这个小技巧就是在使用IDEA的企业版开发的时候,直接创建一个springBoot项目,还可以自定义项目中所需要的技术,创建完成之后就会自动生成SpringBoot项目相应的主程序类、pom.xml文件等

右键创建项目的时候选择Spring Initailizr,主要就是勾选自己需要的技术

效果:

以上就是"SpringBoot2自动配置底层的方法"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。

配置 注解 组件 方法 项目 文件 底层 更新 容器 就是 信息 知识 篇文章 开发 主程序 代码 场景 时候 用户 规则 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 亳州通信软件开发公司哪家好 大数据网络技术研究院 游戏公司的服务器不会停电吗 移动互联网科技公司股票 汇丰软件开发BA待遇 西姆互联网科技 珠海无纸化会议管理服务器厂商 软件开发如何学好 2021软考数据库答案上午 软件开发黑帽子和白帽子 网络安全设计的股票 永结物件链接服务器 网络安全的主题总结 aws 搭建服务器 华为服务器国产化率 我国网络安全定级依据是什么 上海惟旅网络技术 网络安全技术什么是木马 陕西省大学网络安全与信息化学校 在线考试软件开发价位 方舟传送服务器东西都没有了 软件开发需求规格书格式 江苏正规服务器 上海喵先生互联网科技有限公司 中国科技大学网络安全专业好不好 eclipse连接mysql数据库 数据库管理有哪些工作 上海楽客网络技术有限公司 大专学网络技术哪个专业好 数据库是以什么来组织和存放
0