• 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启动过程

  • 相关阅读:
    12 Go的接口
    报错:axios 发送的接口请求 404
    html播放视频
    Servlet--HttpServletRequest类、请求转发对象、常用方法
    Mysql表的操作和数据类型
    Java基础知识面试题(二)(英语答案)
    常见的js手写题【总结】
    简化数据库操作:探索 Gorm 的约定优于配置原则
    记一次ViewPager + RecyclerView的内存泄漏
    UAT 深入指南(用户验收测试)
  • 原文地址:https://blog.csdn.net/yezonggang/article/details/126318742