您现在的位置是:主页 > Web前端技术 > Web前端技术

SpringBoot自动配置原理的示例分析开发技术

IDCBT2021-12-28服务器技术人已围观

简介这篇文章主要介绍了SpringBoot自动配置原理的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 一、

这篇文章主要介绍了SpringBoot自动配置原理的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

      一、SpringBoot是什么

      SpringBoot 的诞生就是为了简化 Spring 中繁琐的 XML 配置,其本质依然还是Spring框架,使用SpringBoot之后可以不使用任何 XML 配置来启动一个服务,使得我们在使用微服务架构时可以更加快速的建立一个应用。

      简单来说就是SpringBoot其实不是什么新的框架,它默认配置了很多框架的使用方式。

      二、SpringBoot的特点

        提供了固定的配置来简化配置,即约定大约配置

        尽可能地自动配置 Spring 和第三方库,即能自动装配

        内嵌容器,创建独立的 Spring 应用

        让测试变的简单,内置了JUnit、Spring Boot Test等多种测试框架,方便测试

        提供可用于生产的特性,如度量、运行状况检查和外部化配置。

        完全不需要生成代码,也不需要 XML 配置。

        三、启动类

        下面探究SpringBoot的启动原理,关于一些细节就不赘述,我们捉住主线分析即可。

        注意:本文的 SpringBoot 版本为 2.6.1

        3.1 @SpringBootApplication

        一切的来自起源SpringBoot的启动类,我们发现main方法上面有个注解:@SpringBootApplication

        @SpringBootApplication
        public class SpringbootWorkApplication {
            public static void main(String[] args) {
                SpringApplication.run(SpringbootWorkApplication.class, args);
            }
        }

        @SpringBootApplication 标注在某个类上说明这个类是 SpringBoot 的主配置类, SpringBoot 就应该运行这个类的main方法来启动 SpringBoot 应用;它的本质是一个组合注解,我们点进去查看该类的元信息主要包含3个注解:

        @Target({ElementType.TYPE})
        @Retention(RetentionPolicy.RUNTIME)
        @Documented
        @Inherited
        @SpringBootConfiguration
        @EnableAutoConfiguration
        @ComponentScan(
            excludeFilters = {@Filter(
            type = FilterType.CUSTOM,
            classes = {TypeExcludeFilter.class}
        ), @Filter(
            type = FilterType.CUSTOM,
            classes = {AutoConfigurationExcludeFilter.class}
        )}
        )
        public @interface SpringBootApplication {

          @SpringBootConfiguration(里面就是@Configuration,标注当前类为配置类,其实只是做了一层封装改了个名字而已)

          @EnableAutoConfiguration(开启自动配置)

          @ComponentScan

          标签:

          很赞哦! ()