• Spring Boot解析,以HelloWorld为例


    主程序类(主入口类)—— @SpringBootApplication注解

    @SpringBootApplication:Spring Boot应用标注在某个类上的说明这个类是Spring Boot的著配置类,Spring Boot会运行这个类的main方法来执行Spring Boot程序

    @SpringBootConfiguration
    @EnableAutoConfiguration
    @ComponentScan(excludeFilters = {
                        @Filter(type = FilterType.CUSTOM, classes ={TypeExcludeFilter.class}), 
                        @Filter(type = FilterType.CUSTOM, classes = {AutoConfigurationExcludeFilter.class})
                    })
    public @interface SpringBootApplication {
    

    @SpringBootApplication注解主要由以下注解组成:

    • @SpringBootConfiguration:实际就是一个@Configuration的别名配置注解,表示这是一个Spring Boot配置类

      @Configuration
      public @interface SpringBootConfiguration {
      

      @Configuration底层就是一个@Component注解的@interface,其实就是一个组件

      @Component
      public @interface Configuration {
      
    • @EnableAutoConfiguration:启动Spring Boot的自动配置

      @AutoConfigurationPackage
      @Import({AutoConfigurationImportSelector.class})
      public @interface EnableAutoConfiguration {
      
      • @AutoConfigurationPackage:自动配置包,实际就是一个@Import注解的@interface,@Import表示为容器注入一些组件

        @Import({Registrar.class})
        public @interface AutoConfigurationPackage {
        

        Registrar类会将主配置类(即@SpringBootApplication标注的类)所在的包及其子包里的所有组件全部扫描到Spring容器中

      • @Import(EnableAutoConfigurationImportSelector.class):为容器注入一些组件

        EnableAutoConfigurationImportSelector是一个告诉Spring应该导入哪些组件的选择器,将需要的组件以全类名的方式返回,然后这些组件就会被添加到容器中。其实最终就是添加一系列的自动配置类,形如xxxxAutoConfiguration,这些自动配置类会自动导入所用场景的组件和配置

        Spring Boot在启动时会从类路径下的MATE-INF/spring.factories中获取EnableAutoConfiguration中指定的值,将这些值导入到容器中,自动配置类就生效了,Spring Boot就会自动帮我们完成配置

    • @ComponentScan:组件扫描

  • 相关阅读:
    安装oh-my-zsh失败,可按以下方式安装
    aria2 for mac
    java抛出异常后,后续代码是否可继续执行
    mac多线程下载神器
    Oracle--大数据迁移--sqlldr技术的应用
    Windows版 GCC编译器安装和使用--MinGW
    Visual Studio 2015 安装与注册
    android studio 3.6 环境搭建(安装步骤)
    IDEA--主题样式设置
    数据--innercode--的处理
  • 原文地址:https://www.cnblogs.com/renoside/p/13606718.html
Copyright © 2020-2023  润新知