• SpringBoot实践(三十):简单分析SpringBoot自动配置和启动


    目录

    自动配置

    @EnableAutoConfiguration注解

    @AutoConfigurationPackage注解

    @ComponentScan注解

     SpringBoot启动过程


    按照springboot约定方式使用其框架可以自动将类实例化和生命周期管理,即IOC,正常情况只需要一个启动类,重点分析下@SpringBootApplication注解如何实现类的自动扫描和装配,以及启动过程。

    1. @SpringBootApplication
    2. public class MyApplication {
    3. public static void main(String[] args) {
    4. SpringApplication.run(MyApplication.class, args);
    5. }
    6. }

    自动配置

    @SpringBootApplication是个组合注解,包括:

    1.@SpringBootConfiguration: 本质上是@Configuration注解,@Configuration等价于,其中如果有@Bean注解其等价于,这里加@Configuration注解表明这个启动类就是个配置类;

    2.@EnableAutoConfiguration :扫描spring.factories文件,自动配置;

    3.@ComponentScan: 告诉Spring 哪个packages 的用注解标识的类 会被spring自动扫描并且装入bean容器,这里会排除spring.factories文件的value;

     重点关注的是@EnableAutoConfiguration和@ComponentScan注解

    @EnableAutoConfiguration注解

    它也是一个组合注解,首先关注@Import(AutoConfigurationImportSelector)这个注解,@Import这个注解类是用于导入配置类可以理解java程序中的Import 包.类;那么导入AutoConfigurationImportSelector有什么用呢;

    AutoConfigurationImportSelector是一个接口,其有一个方法getAutoConfigurationEntry(),

    该方法读取spring.factories中的所有配置类列表:

     最终@EnableAutoConfiguration注解实现的作用就是META-INF/spring.factories配置文件的value进行排序过滤进行实例化;

    @AutoConfigurationPackage注解

    @EnableAutoConfiguration还有个@AutoConfigurationPackage注解是做什么用的,其实就是个包路径,也就是作用范围的指定。

    将添加该注解的类所在的package 作为 自动配置package 进行管理,@Import(AutoConfigurationPackages.Registrar)表示对于使用了该注解的类所在的包,应当使用AutoConfigurationPackages注册。

     注册类和方法如下:自动扫描同级及以下的包,如果有包在@AutoConfigurationPackage注解范围以上扫描不到.

    @ComponentScan注解

    @ComponentScan用于类或接口上主要是指定扫描路径,spring会把指定路径下带有指定注解的类注册到IOC容器中。会被自动装配的注解包括@Controller、@Service、@Component、@Repository等等。

    @EnableAutoConfiguration注解实现了spring.factories中配置类的自动配置,@ComponentScan实现了用户指定的类的自动注入;

     SpringBoot启动过程

  • 相关阅读:
    SRS服务器ffmpeg 推流rtmp超时中断
    【Ajax】HTTP相关问题-XHR使用-跨域-同源-jsonp-CORS
    程序员都看不懂的代码
    【leetcode面试经典150题】74. 填充每个节点的下一个右侧节点指针 II(C++)
    在Ubuntu 16.04中安装RStudio Server
    微服务—RabbitMQ高级(业务在各方面的可靠性)
    基于HTML+CSS+JavaScript角色后台管理系统设计毕业论文源码
    通过文件流转加密压缩文件并下载
    6.2-反向传播
    Oracle主备切换,ogg恢复方法(集成模式)
  • 原文地址:https://blog.csdn.net/yezonggang/article/details/126318742