zoukankan      html  css  js  c++  java
  • 阶段一 第一周 2-12 springboot自动装配简述

    • 重点是SpringApplication.run这个方法,点进去可以看到英文注释中说明了它使用了一些默认的配置。那么这些默认的配置是从哪里来的呢,其实都是从@SpringBootApplication这个注解来的。运行这个方法之后,会返回一个正在运行的runningApplicationContext上下文对象。也就是springboot容器启动以后,会有一个上下文对象的。

    • 接下来我们看下这个注解。我们需要关注它里面的@SpringBootConfiguration,然后有一个@EnableAutoConfiguration最后一个是@ComponentScan。注意我们当前这个Application是在com.imooc这个包下,所以当我们的容器启动以后,它会扫描当前我们这个包下所有的类以及所有子包的类。比方说这个包下面有dao层,有service层都会被@ComponentScan扫描到。当然,我们现在加了一个@RestController在它的子包controller下面,所以它又会被我们的Application我们的容器去扫描到。

    • 然后我们看下@SpringBootConfiguration,那么可以看到它是一个接口,这个接口的主要的配置是一个@Configuration,代表了它是一个容器,是一个IOC容器,

    • 另外,@EnableAutoConfiguration,它是用来开启自动装配的,点进去然后它里面有个@Import,它就是用于去做导入的,就是把一个个的@Configuration导进去,把容器导进去。然后我们需要看@Import上面的AutoConfigurationImportSelector.class,它是一个自动装配的用于去做导入的选择器,既然是一个选择器,它就有可能包含很多的内容,比如举例子,jQuery的选择器,可以批量选择很多东西,在这里是一样的,它可以选择很多自动装配的类。点击这个AutoConfigurationImportSelector看看,这个类里面有很多方法,我们看selectImports这个方法,然后方法里面有个getAutoConfigurationEntry,这个是用于去获得自动装配的类。进去后,会看到有个语句得到了List configurations,那么这个就是配置,它是放到了list里面的。 接下来看getCandidateConfigurations这个方法, 这里有个断言,如果configurations为空的话,可能会报异常,重点信息是META-INF/spring.factories,那么spring.factories里面包含了很多自动装配的类,那么这些类是一个个的字符串,最终获得了以后是字符串类型的list。我们用idea的定位,定位一下当前这个AutoConfigurationImportSelector这个类所在的jar包,这个jar包就是spring-boot-autoconfiguration这个jar包,这个jar包里面有META-INF这个文件夹,里面有spring.factories文件。双击了以后,可以看到里面有很多内容,大部分类名都以AutoConfiguration结尾,也就是springboot为我们实现了很多自动装配,我们可以看下EmbeddedWebServerFactoryCustomizerAutoConfiguraion,里面有默认的Tomcat的配置,然后再看WebMVCAutoConfiguration,就是帮我们精简了很多springMVC的配置,然后还有一个ServletWebServiceFactoryAutoConfiguration,这个类的注释自动装配了servlet web servers,就是我们的web服务器是通过自动装配运行的。这也就是为什么我们运行了Application后,我们内置的Tomcat就启动了。

  • 相关阅读:
    🍖JS函数
    🍖JS流程控制
    🍖JS运算符介绍
    🍖JS数值类型与字符串类型的内置方法
    多态
    property装饰器
    封装
    组合
    继承&派生 属性查找
    继承与派生
  • 原文地址:https://www.cnblogs.com/yeason/p/13675737.html
Copyright © 2011-2022 走看看