我的编程空间,编程开发者的网络收藏夹
学习永远不晚

SpringBoot2自动配置底层的方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

SpringBoot2自动配置底层的方法

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

1 自动配置底层分析

1.1 自动配置注解解析

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

@SpringBootConfiguration

该注解底层有一个@Configuration注解,标明当前类是一个配置类

@EnableAutoConfiguration该注解又由以下两个注解组合而成

  • @AutoConfigurationPackage:底层使用@Import({Registrar.class})向容器中注册组件,Registrar.class里获取到主程序所在的包并将包下的所有组件导入进来,这也就间接说明了SpringBoot的默认包扫描规则: 主程序(MainApplication)所在的包及这个包的所有子包都会被扫描

SpringBoot2自动配置底层的方法

  • @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)按需配置。

SpringBoot2自动配置底层的方法

@ComponentScan 这个注解定义了包扫描的规则

1.2 修改默认配置

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

1.3 总结

● SpringBoot先通过xxxxxAutoConfiguration加载所有的自动配置类

● 每个自动配置类按照条件进行生效,默认都会绑定配置文件指定的值,这个值就在xxxxProperties里面拿,xxxProperties和配置文件进行了绑定。

● 生效的配置类就会给容器中装配很多组件

● 只要容器中有这些组件,相当于这些功能就有了

● 定制化配置

○ 用户直接自己@Bean替换底层的组件

○ 在创建的配置文件中使用配置项修改默认的配置信息。比如说配置字符编码格式在HttpEncodingAutoConfiguration里的注解中可以得知

SpringBoot2自动配置底层的方法

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插件

SpringBoot2自动配置底层的方法

使用注解进行开发

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

  • @NoArgsConstructor: 无参构造器

  • @AllArgsConstructor: 全参构造器

  • @ToString: 全参数的toString方法

  • @Data: getter和setter方法

SpringBoot2自动配置底层的方法

生成日志

  • 类上加注解@Slf4j

  • log.info方法打印日志

SpringBoot2自动配置底层的方法

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文件等

SpringBoot2自动配置底层的方法

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

SpringBoot2自动配置底层的方法

效果:

SpringBoot2自动配置底层的方法

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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

SpringBoot2自动配置底层的方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

SpringBoot2自动配置底层的方法

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

springBoot2.X配置全局捕获异常的方法

本篇内容主要讲解“springBoot2.X配置全局捕获异常的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“springBoot2.X配置全局捕获异常的方法”吧!springBoot2.X配
2023-06-20

Spring boot 自定义 Starter及自动配置的方法

Starter组件是Springboot的一个核心特性,Starter组件的出现极大的简化了项目开发,这篇文章主要介绍了Spring boot 自定义 Starter 及 自动配置,需要的朋友可以参考下
2022-12-08

SpringBoot整合Nacos自动刷新配置的方法

本篇内容主要讲解“SpringBoot整合Nacos自动刷新配置的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot整合Nacos自动刷新配置的方法”吧!目的Nacos作为S
2023-06-29

Rainbond配置组件自动构建部署的方法

今天小编给大家分享一下Rainbond配置组件自动构建部署的方法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。前言通过自动构
2023-06-30

基于Spring Boot排除自动配置的方法分享

这篇文章主要讲解了“基于Spring Boot排除自动配置的方法分享”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“基于Spring Boot排除自动配置的方法分享”吧!Spring Boot
2023-06-20

SpringBoot自定义Starter与自动配置实现方法详解

在SpringBoot官网为了简化我们的开发,已经提供了非常多场景的Starter来为我们使用,即便如此,也无法全面的满足我们实际工作中的开发场景,这时我们就需要自定义实现定制化的Starter
2023-02-07

intellijidea自动生成类注释和方法注释配置方法

这篇文章主要介绍了intellijidea自动生成类注释和方法注释设置方法,需要的朋友可以参考下
2023-01-28

linux expect 自动登录交换机保存配置的方法

telnet.exp 文件内容如下:#!/usr/bin/expect -f set ip [lindex $argv 0 ] set username [linde
2022-06-04

实现core文件自动生成配置文件的方法

本文讲述了实现core文件自动生成的配置方法,具体执行步骤如下: 1.编辑环境配置文件,让shell启动时自动设置ulimitvi /etc/profile ulimit -c unlimited > /dev/null 2>&12.更改c
2022-06-04

pycharm设置自动换行的方法

只对当前文件有效的操作:菜单栏->View -> Active Editor -> Use Soft Wraps;如果想对所有文件都有效,就要在setting里面进行操作:File-> Setting-> Editor-> General
2023-01-30

css设置自动换行的方法

这篇文章主要介绍了css设置自动换行的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在css中,可以使用“word-wrap”属性设置自动换行,语法“word-wrap:
2023-06-14

css自动换行的设置方法

这篇“css自动换行的设置方法”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“css自动换行的设置方法”,给大家总结了以下内容,具有一定借鉴价值,内容详细步骤清晰,细节处理妥当,希望大家通过这篇文章有所收获,下面让我们一起来看
2023-06-06

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录