美文网首页学习笔记
05【掌握】springboot启动分析【难点】

05【掌握】springboot启动分析【难点】

作者: 杨不易呀 | 来源:发表于2020-04-25 13:11 被阅读0次

    05【掌握】springboot启动分析【难点】

    @SpringBootApplication

    
    @Target(ElementType.***TYPE***)
    
    @Retention(RetentionPolicy.***RUNTIME***)
    
    @Documented
    
    @Inherited
    
    @SpringBootConfiguration 就是对spring里面的@Configruation的包装
    
    @EnableAutoConfiguration 启动自动配置
    
    //扫描
    
    @ComponentScan(excludeFilters = { @Filter(type = FilterType.***CUSTOM***, classes = TypeExcludeFilter.**class**),
    
      @Filter(type = FilterType.***CUSTOM***, classes = AutoConfigurationExcludeFilter.**class**) })
    
    @ConfigurationPropertiesScan
    
    **public**  **@interface**  SpringBootApplication {
    
    

    @EnableAutConfigruation

    
    @Target(ElementType.***TYPE***)
    
    @Retention(RetentionPolicy.***RUNTIME***)
    
    @Documented
    
    @Inherited
    
    @AutoConfigurationPackage //自动配置的包
    
    @Import(AutoConfigurationImportSelector.**class**) //导入自己配置配置的配置类
    
    **public**  **@interface**  EnableAutoConfiguration {
    
    

    @AutoConfigurationPackage

    @Target(ElementType.***TYPE***)
    
    @Retention(RetentionPolicy.***RUNTIME***)
    
    @Documented
    
    @Inherited
    
    @Import(AutoConfigurationPackages.Registrar.**class**) //自己扫描包的配置类
    
    **public**  **@interface**  AutoConfigurationPackage {
    
    }
    
    

    进入AutoConfigurationPackages.Registrar.class

    image.png

    进入register方法

    image.png

    可以看出默认扫描的就是当前启动类所在的包

    如何加载自动配置类

    回到EnableAutoConfiguration

    image.png

    进入AutoConfigurationImportSelector

    <servlet>
    
     <servlet-name>springmvc</servlet-name>
    
    <servlet-class> org.springframework.web.servlet.DispatcherServlet</servlet-class>
    
    </servlet>
    
    <servlet-mapping>
    
    <servlet-name>springmvc</servlet-name>
    
    <url-patten>/ </url-patten>
    
    </servlet-mapping>
    

    查看getAutoConfigurationEntry

    image.png

    发现springboot默认加载了124个自动配置类

    image.png

    下面的代码走完之后发现只有22个了。因为有些配置类不满足条件,被移除了

    那124个自动配置类是如何加进来的

    image.png image.png image.png image.png

    springboot提供了哪些starter

    https://docs.spring.io/spring-boot/docs/2.1.3.RELEASE/reference/htmlsingle/#using-boot-starter

    相关文章

      网友评论

        本文标题:05【掌握】springboot启动分析【难点】

        本文链接:https://www.haomeiwen.com/subject/nnahwhtx.html