大家好,这里是教授.F
目录
前提知识:
场景引入:
1.Starter依赖:
2.默认配置:
3.自定义配置:
4.条件化配置:
5.自动装配:
具体过程:
扫包路径的配置:
配置的默认值:
按需加载自动配置:
前提知识:
1。所有的boot项目都有一个spring-boot-starter-parent父项目。这个parent的父项目是spring-boot-dependencies。
2.maven依赖的传递规则:如果A-B-C,则A同时拥有B和C
场景引入:
我们像做一杯咖啡,首先要有一台咖啡机。springboot比ssm这些框架相比,就是springboot是一台智能的咖啡机,而ssm是一台需要手动的咖啡机。
学习springbooot3中自动配置机制需要从五个点出发:
1.Starter依赖:
所谓的Starter依赖就是拥有一台咖啡机,每个Starter依赖都包含了一组相关的库和依赖,以简化项目配置。通过引入对应的Starter依赖,可以自动配置相关的功能模块。
用咖啡机来理解就是用了Starter的依赖,就能实现从一台老式咖啡机变成智能咖啡机。
2.默认配置:
默认配置类似于一台智能的咖啡机的默认属性,比如我们电源打开,点击开始,咖啡机一定有默认的参数,比如咖啡豆放多少,水温多少......
利用 @Configuration
注解的配置类来定义自动配置。这些配置类会根据条件来注册相应的 Bean,从而实现特定功能的自动配置。这些自动配置类会根据类路径中的依赖和条件来确定是否生效,并根据需要注册相应的 Bean。
3.自定义配置:
但是,也许你想要调整咖啡的浓度或温度,或者使用自己喜欢的咖啡豆。这时,你可以通过按下咖啡机上的特定按钮,或者调节咖啡机的参数来自定义配置。在 Spring Boot 中,你可以通过编写自己的配置类或者属性文件,来覆盖默认的配置,实现自定义的配置。
springboot3具体实现:
- 编写自定义配置类:开发者可以通过编写自己的配置类,使用
@Configuration
注解标记这些类,并在其中使用@Bean
注解来声明需要自定义的 Bean。这样可以覆盖默认的配置,实现自定义的配置。 - 属性文件:开发者可以通过编写属性文件(如 application.properties 或 application.yml)来覆盖默认的配置。在属性文件中指定自定义的属性值,如数据库连接信息、日志级别等,从而实现自定义的配置。
4.条件化配置:
假设你有一个家庭成员对咖啡因过敏,不喝含咖啡因的咖啡。在这种情况下,你希望咖啡机只在特定条件下(比如时间是早晨、没有特殊要求的情况下)才会冲泡不含咖啡因的咖啡。类似地,在 Spring Boot 中,你可以使用条件化配置,根据特定的条件来决定是否启用某些配置。
5.自动装配:
最后,假设你新买了一个咖啡机的配件,比如一个磨豆器。你只需将这个配件插入到咖啡机上的特定插槽中,咖啡机会自动识别这个配件,并根据需要进行相应的调整,以便将这个配件整合到咖啡机的工作流程中。在 Spring Boot 中,自动配置机制也类似,它会根据你应用程序的依赖、类路径和配置信息,自动装配所需的组件和功能,以简化应用程序的开发和部署过程。
以上通过一个生活化的例子进行描述,接下来就进入到springboot3中的具体实现过程。
具体过程:
扫包路径的配置:
当使用@SpringBootApplication标注时,就表示当前类是主程序类。SpringBoot只会扫描主程序所在的包及其下面的子包,自动的component-scan功能。
此外也可以自动配置:
@SpringBootApplication(scanBasePackages = "com.atguigu")
@ComponentScan("com.atguigu")
直接指定扫描的路径
配置的默认值:
配置文件的所有配置项是和某个类的对象值进行一一绑定的。
绑定了配置文件中每一项值的类: 属性类。
按需加载自动配置:
导入场景spring-boot-starter-web
场景启动器除了会导入相关功能依赖,导入一个spring-boot-starter
,是所有starter
的starter
,基础核心starter
spring-boot-starter
导入了一个包 spring-boot-autoconfigure
。包里面都是各种场景的AutoConfiguration
自动配置类
虽然全场景的自动配置都在 spring-boot-autoconfigure
这个包,但是不是全都开启的。【导入哪个场景就开启哪个自动配置】
总结: 导入场景启动器、触发 spring-boot-autoconfigure
这个包的自动配置生效、容器中就会具有相关场景的功能