当前位置: 首页 > 网络应用技术

Springboot的自动配置说明

时间:2023-03-06 14:50:50 网络应用技术

  今天,让我们谈谈Springboot自动配置的原理。在我们以前的Web项目开发过程中,配置文件配置很麻烦。如果将其与多个框架集成在一起,则可以维护多个配置文件。这将花费大量时间来维护配置文件。如果添加了一个小功能,则可能需要复杂的配置。跳跃机后,这种情况会大大改善。即使我们使用默认配置,我们也无需花费时间来用于这些配置文件,而是关注应如何实现我们的业务功能。

  Springboot如何执行如此多的配置项目,这些项目在我们以前的配置项中未看到效果的效果?首先,让我们首先创建一个Web项目。通过IDEA工具,我们可以直接创建一个可以运行的Web项目。我不会在这里证明它。创建完成后,有这样的目录结构,并且有一个默认的启动类。

  开始主题;Springboot自动配置主要依赖于启动类中的@springbootapplication,我们单击此注释,您可以看到

  自动配置原则:

  Springboot启动后,将加载主配置类,并打开自动配置功能;

  影响:

  在容器中使用一些组件;我们可以单击以查看他的底部是如何实现的;如图所示

  你可以看到;继续指出,我们将在课堂上看到该方法;

  您可以看到SpringFactoriesLoader类中已完成了哪些操作;

  将所有在元I-Inf/spring.factories中配置的值添加到容器中;

  您可以看到自动配置类为我们做了什么;我发现我们经常使用Springboot的基础知识认为我们已将配置添加到容器中。这些配置类具有一个共同的功能,即通用功能是结束时结束。每种自动配置都是通过配置类将配置加载到容器中。如果我们熟悉SPING配置,我们知道当要使用某个功能时,我们还将特定配置配置为Spring容器。这是这里的Springboot。我们自动配置了我们。

  Springboot的自动配置如何?我们可以根据需要自定义配置?让我们看一下如何实现此自动配置。如果我们自己编写,如何自定义配置。

  首先,我们需要熟悉两个注释:

  1. @component //将POJO对象注入容器中,即每个属性值的值映射到容器中

  2. @configurationProperties //告诉SpringBoot将此类别中的所有属性与此类别中的相关配置绑定;prefix =“”:配置文件中的所有以下所有属性都一一最大化,以一个一个一个一个逐一最大化,以一个一个一个一个一个逐一的最大化,以一个一个一个一个一个逐一的最大化,以一一一个一个一个一个一个。

  我以一个小例子来说明这两个注释的作用。我们通过配置文件的形式读取配置文件中的属性值(也就是说,解释为什么我们在配置文件中配置属性值之后);

  首先,我们看到两个物理课,一个猫班,一个人班。

  然后在配置文件中,我们将值分配给这些属性,然后通过这些类的对象分配,以查看是否可以在配置文件中获取这些属性的值;

  配置文件application.yml(SpringBoot的默认配置文件是应用程序。Properties&Application.yml)两个Springboot已确定,但是此处使用的.yml的配置;详细的YML语法可以在线检查信息。我不会在此处一一详细介绍,以下是通过配置文件的物理类属性的值;

  作业完成后,我们必须采用该值。在这里,我们使用项目自动生成的测试类别来打印我们这一代的价值;

  我们通过@ConfigurationProperties进行注释。前缀属性的配置注释可以在配置文件中成功读取并将其注入容器中;

  接下来,让我们看一下如何获得Springboot的这些自动配置;首先,我们仍然找到一个自动配置类,因为每个配置类都是这样实现的,所以我们只是在配置类中找到一个。

  在这里,我们没有找到其他东西来完成Web项目所需的调度员的配置。如果您熟悉SpringMVC框架,并使用SpringMVC框架开发,则应是DispatcherServ的配置;我们为我们做到这一点;

  首先找到这个课程;

  拦截部分,所有的拦截都太多了。我们可以看到,此自动配置类有很多注释。您可以看到特定的角色:

  @AutoconFigureOrder(orded.highes_preedence)

  @配置

  @conditionalonwebapplication(type = type.servlet)

  @ConditionAlonClass(dispatcherservlet.class)

  @autoconfigurealate(ServiceTwebServerFactoConfigution.Class)

  @enableconfigurationProperties(serverproperties.class)

  首先,第一个@AutoConfigureOrder(orded.highes_preedence)。如果您熟悉以前的SpringMVC配置,则此配置可能知道它的含义。我们以前的配置的顺序如下。值越小,优先级越高,将优先级加载(概念是优先级):

  也就是说,当我们具有相同的配置时,我们价值的值越小,优先级越高,

  第二个注释@configuration,我们都应该知道这是一个配置类。之前编写的配置文件还可以将组件添加到容器中;

  第三个注释弹簧的基础注释。根据不同的条件,如果满足指定条件,则整个配置类中的配置将生效;确定当前应用程序是否为Web应用程序,如果是Web应用程序,当前的配置类将有效

  第四个注释:目前是否有某个类别,这是dispatcherservlet.class,是否有dispatcherservlet类,如果有此配置文件,它将生效。

  第五注释:定义这些配置类的负载顺序。

  *关注第六个注释:启动指定类的功能;将配置文件中的相应值绑定到ServerProperties;并将ServerProperties添加到IOC容器中;

  这是什么意思?我们可以看到它是如何实现的。此处配置类的属性是我们配置的某些服务信息的配置;端口,地址等;

  我切断了部门,我可以看到这是我们之前所做的小测试。如何在配置文件中读取参数值是 @configurationProperties的使用。属性名称是我们配置的特定属性。

  而且我们的DispatcherServlet配置与DispatcherServletAutoConfiguration的自动配置类有关,MVC配置在哪里,我们可以看到特定的方法;如果选择一个,则该方法用于配置MVC配置; duan代码,为了更清楚地知道,我们撤出并说;

  查看此类@enableconfigurationProperties(webmvcproperties.class),webmvcproperties.class的配置文件;课堂中的特定属性;

  仅拦截零件;请参阅我们之前使用的这些配置,这里有相应的属性。他通过configurationProperties.mvc的形式读取配置文件中的属性值。properties =值分配配置文件属性;

  总结:

  1)Springboot将加载大量自动配置类

  2)我们查看我们需要的功能是否是SpringBoot默认自动配置类;

  3)让我们看看在此自动配置类中配置了哪些组件;(只要我们使用使用的组件,我们就不需要再次配置)

  4)当将自动配置类添加到容器中时,将从属性类获得一些属性。我们可以在配置文件中指定这些属性的值;

  XXXXAUTOCONFIGURARTION:自动配置类;将组件添加到容器中

  xxxxproperties:软件包配置文件中的相关属性;

  Springboot的自动配置极大地简化了我们的配置过程,使我们能够专注于业务发展。