1.SpringBoot的诞生

        首先,为什么我们需要使用SpringBoot?

        当我使用Spring我们遇到的问题,那就是我们需要开多个容器,以及每个容器都要写相应的配置类,比如我们的Service层需要写配置类,而Dao层也要写。

        所以,我们就迫切的需要一个框架来帮我们解决这一个痛点。所以,SpringBoot诞生了。SpringBoot 帮我们简单、快速地创建一个独立的、生产级别的 Spring 应用(说明:SpringBoot底层是Spring)

        自动配置机制

        解决spring痛点的方法,spring就是靠着自动配置来进行实现的。

  • 自动配置的 Tomcat、SpringMVC 等
    • 导入场景,容器中就会自动配置好这个场景的核心组件。
    • 以前:DispatcherServlet、ViewResolver、CharacterEncodingFilter....
    • 现在:自动配置好的这些组件
    • 验证:容器中有了什么组件,就具有什么功能。
    •     public static void main(String[] args) {
      
              //java10: 局部变量类型的自动推断
              var ioc = SpringApplication.run(MainApplication.class, args);
      
              //1、获取容器中所有组件的名字
              String[] names = ioc.getBeanDefinitionNames();
              //2、挨个遍历:
              // dispatcherServlet、beanNameViewResolver、characterEncodingFilter、multipartResolver
              // SpringBoot把以前配置的核心组件现在都给我们自动配置好了。
              for (String name : names) {
                  System.out.println(name);
              }
      
          }

      默认的包扫描规则

      SpringBoot项目会自动扫描主启动类所在包以及它下面的子包。
    • 并且而且它会自动配置我们所需要的项目,比如,如果我们需要使用Tomcat项目,我们只需要把Tomcat需要的配置写在我们的配置类里面就好了。这样我们启动项目的时候,它就会自动配置Tomcat给我们,同理Mysql的也是。
    • 它是怎么实现的呢?SpringBoot启动会默认加载 142个配置类。 这142个配置类来自于spring-boot-autoconfigureMETA-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件指定的
    • 而在我们引入我们的依赖Spring-boot-start后,这个依赖就会自动的给我们引入AutoConfiguration自动配置类。而这个类检测到我们的yml文件里面配置了什么服务,就会给我们自动导入什么服务。
    • 细节就是starter-web给我们导入了web开发场景。
    • springBootApplication注解又给我们导入了EnableAutoConfiguration
    • 核心流程总结:

      1、导入starter,就会导入autoconfigure包。

      2、autoconfigure 包里面 有一个文件 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports,里面指定的所有启动要加载的自动配置类

      3、@EnableAutoConfiguration 会自动的把上面文件里面写的所有自动配置类都导入进来。xxxAutoConfiguration 是有条件注解进行按需加载

      4、xxxAutoConfiguration给容器中导入一堆组件,组件都是从 xxxProperties中提取属性值

      5、xxxProperties又是和配置文件进行了绑定

      效果:导入starter、修改配置文件,就能修改底层行为。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值