做高端网站百度推广话术全流程
与其明天开始,不如现在行动!
文章目录
- 1 依赖管理机制
 - 2 自动配置机制
 - 2.1 初步理解
 - 2.2 完整流程
 
- 💎总结
 
1 依赖管理机制
-  
为什么导入
starter-web后所有相关依赖都会导入进来?- 开发什么场景,导入什么场景启动器
-spring-boot-starter- - maven依赖传递原则,a-b-c:a就拥有c
 - 导入一个场景启动器,就会自动把整个场景的所有核心依赖全部导入进来
 
 - 开发什么场景,导入什么场景启动器
 -  
为什么版本号都不用写?
-  
每个boot项目都有一个父项目:
spring-boot-starter-parent -  
parent的父项目是:
spring-boot-dependencies -  
在里面版本仲裁中心就写好了每个jar包的版本
 -  
要自定义版本号
- 直接在依赖下面声明版本号
 - 利用maven的就近原则 
- 直接在当前项目使用
<properties>标签 
 - 直接在当前项目使用
 
<properties><mysql.version>8.0.31</mysql.version> </properties> -  
第三方jar包要自己声明
 
 -  
 

2 自动配置机制
2.1 初步理解
- 自动配置的Tomcat、SpringMVC等 
- 以前:要配置一堆的组件
 - 现在:SpringBoot自动配置好这些组件,容器中有了什么组件,就具有什么功能
 - 导入场景,容器中就会自动配置好这个场景的核心组件
 
 - 默认的包扫描规则 
- @SpringBootApplication注解的类就是主程序
 - SpringBoot只会扫描主程序所在的包及其下面的子包:
com.wen.usercenter及其子包 
 - 配置默认值 
- 配置文件(如:application.properties)的所有配置项是和某个类的对象值进行一一绑定的
 - 绑定了配置文件中每一项值的类:配置属性类
 
 - 按需加载自动配置 
- 导入场景
spring-boot-starter-web - 场景启动器除了会导入相关依赖,还导入一个
spring-boot-starter,是所有starter的starter,基础核心starter spring-boot-starter导入了一个包spring-boot-autoconfigure。包里面都是各种场景的AutoConfiguration自动配置类- 虽然全场景的自动配置都在
spring-boot-autoconfigure这个包,但是不是全部开启的。导入哪个场景就开启哪个。 
 - 导入场景
 
总结:导入场景启动器,触发spring-boot-autoconfigure这个包的自动配置生效,容器中就会具有相关的功能
2.2 完整流程
思考:
- SpringBoot怎么实现导入一个
 starter,写一些简单的配置,应用就能跑起来,我们无需关心整合?- 为什么Tomcat的端口号可以配置在
 application.properties中,并且Tomcat能启动成功?- 导入场景后哪些自动配置能生效?
 

流程:
- 导入
stater:导入了web开发场景- 场景启动器导入了相关场景的所有依赖:
starter-json、starter-tomcat、springmvc - 每个场景启动器都引入了一个
spring-boot-starter核心场景启动器 - 核心场景启动器引入了
spring-boot-autoconfigure自动配置包,里面囊括了所有场景的所有配置 - 只要这个包下的所有类都能生效,那么相当于SpringBoot官方写好的整合功能就生效了
 - SpringBoot默认扫描不到
spring-boot-autoconfigure下写好的所有配置类 
 - 场景启动器导入了相关场景的所有依赖:
 - 主程序:
@SpringBootApplication@SpringBootApplication由三个注解组成:@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan- SpringBoot默认扫描不到
spring-boot-autoconfigure下写好的所有配置类 @EnableAutoConfiguration:SpringBoot开启自动配置的核心。- 是由
@Import({AutoConfigurationImportSelector.class})提供功能:批量给容器中导入组件 - SpringBoot启动会默认加载142个配置类
 - 这142个配置类来自于
spring-boot-autoconfigure包下META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件指定的所有类 - 项目启动的时候利用
@Import批量导入组件机制把autoconfigure包下的142个xxxAutoConfiguration类导入进来(自动配置类) - 按需生效: 
- 虽然导入了142个自动配置类,但是并不是都能生效
 - 每个自动配置类,都有条件注解
@ConditionOnXxx,只有条件成立,才能生效 
 xxxAutoConfiguration自动配置类- 给容器中使用@Bean放一堆组件
 - 每个自动配置类都有可能由注解:
@EnableConfigurationProperties(ServerProperties.class),用来把配置文件中配的指定前缀的属性值封装到xxxProperties属性类中 - 以Tomcat为例,把服务器的所有配置都是以
server开头的。配置都封装到属性类中 - 给容器中放的所有组件的一些核心参数,都来自于
xxxProperties。xxxProperties都适合配置文件绑定的 - 只需要改配置文件的值,核心组件的底层参数都能修改
 
- 是由
 
 - 写业务,无需关心各种整合(底层这些整合都写好了,而且也生效了)
 
核心流程:
- 导入
starter,就会导入autoconfigure包 autoconfigure包里面有一个文件META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports,里面指定了所有启动要加载的自动配置类@EnableAutoConfiguration会自动的把上面文件里面写的所有自动配置类都导入进来。xxxAutoConfiguration给容器中导入很多组件,根据条件注解按需加载 ,组件都是从xxxProperties中提取属性值xxxProperties又是和配置文件进行绑定
效果:导入starter、修i该配置文件、就能修改底层行为
💎总结
本文中若是有出现的错误请在评论区或者私信指出,我再进行改正优化,如果文章对你有所帮助,请给博主一个宝贵的三连,感谢大家😘!!!
