用咖啡来理解springboot3的自动配置机制

大家好,这里是教授.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具体实现:

  1. 编写自定义配置类:开发者可以通过编写自己的配置类,使用 @Configuration 注解标记这些类,并在其中使用 @Bean 注解来声明需要自定义的 Bean。这样可以覆盖默认的配置,实现自定义的配置。
  2. 属性文件:开发者可以通过编写属性文件(如 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,是所有starterstarter,基础核心starter

                         spring-boot-starter导入了一个包 spring-boot-autoconfigure。包里面都是各种场景的AutoConfiguration自动配置类

                          虽然全场景的自动配置都在 spring-boot-autoconfigure这个包,但是不是全都开启的。【导入哪个场景就开启哪个自动配置】

总结: 导入场景启动器、触发 spring-boot-autoconfigure这个包的自动配置生效、容器中就会具有相关场景的功能

  • 23
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值