Spring Boot Framework的关键组件和内部

时间:2020-02-23 14:35:42  来源:igfitidea点击:

在我以前的文章" Spring Boot简介"中,我们讨论了有关Spring Boot的基础知识。
现在,我们将讨论" Spring Boot的主要组件是什么"和" Spring Boot如何在后台运行"。

Spring Boot Framework的关键组件

Spring Boot Framework主要包含四个主要组件。

  • Spring启动启动器
  • Spring Boot AutoConfigurator
  • Spring Boot CLI
  • 弹簧启动器

注意:-除了这四个主要组件之外,还有两个以上的Spring Boot组件:

  • Spring开始
  • Spring Boot IDE

为了快速启动新的Spring Boot项目,我们可以使用" Spring Initializr" Web界面。
Spring Initializr URL:https://start.spring.io。

我们有许多Spring Boot IDE,例如Eclipse IDE,IntelliJ IDEA,Spring STS Suite等。
我们将在以后的文章中讨论这两个组件。

现在,我们将详细讨论这些Spring Boot的四个组件。

Spring Boot Starter

Spring Boot Starters是Spring Boot Framework的主要关键功能或者组件之一。
Spring Boot Starter的主要职责是将一组常见或者相关的依赖项组合为单个依赖项。
我们将通过一个示例详细探讨该声明。

例如,我们想用Tomcat WebServer开发一个Spring WebApplication。
然后,我们需要在Maven的pom.xml文件或者Gradle的build.gradle文件中添加以下最小jar依赖项

  • Spring核心Jar文件(spring-core-xx.jar)
  • Spring Web Jar文件(spring-web-xx.jar)
  • Spring Web MVC Jar文件(spring-webmvc-xx.jar)
  • Servlet Jar文件(servlet-xx.jar)

如果要添加一些数据库内容,则需要添加与数据库相关的jar,例如Spring JDBC jar文件,Spring ORM jar文件,Spring Transaction Jar文件等。

  • Spring JDBC Jar文件(spring-jdbc-xx.jar)
  • Spring ORM Jar文件(spring-orm-xx.jar)
  • Spring Transaction Jar文件(spring-transaction-xx.jar)

我们需要在构建文件中定义很多依赖项。
对于开发人员而言,这是非常繁琐且繁琐的任务。
而且它还会增加我们的构建文件大小。

有什么解决方案可以避免在构建文件中出现如此多的依赖项定义?解决方案是Spring Boot Starter组件。

Spring Boot Starter组件将所有相关的jar组合到单个jar文件中,因此我们只能将jar文件依赖项添加到我们的构建文件中。
无需将上述4个jar文件添加到我们的构建文件中,我们需要添加一个并且仅添加一个jar文件:" spring-boot-starter-web" jar文件。

当我们将" spring-boot-starter-web" jar文件依赖项添加到我们的构建文件中时,Spring Boot Framework将自动下载所有必需的jar文件并添加到我们的项目类路径中。

同样," spring-boot-starter-logging" jar文件会将其所有依赖项jar加载到我们的项目类路径中,例如" jcl-over-slf4j,jul-to-slf4j,log4j-over-slf4j,logback-classic"。

Spring Boot Starter的主要优点

  • Spring Boot Starter减少了许多依赖的定义,简化了项目构建的依赖。

  • Spring Boot Starter简化了项目构建的依赖关系。

就是关于Spring Boot Starter组件。
我们将在以后的文章中通过一些Spring Boot示例讨论更多细节。

Spring Boot自动配置器

Spring Boot Framework的另一个重要关键组件是Spring Boot AutoConfigurator。
多数Spring IO平台(Spring框架)的批评者认为,"开发基于Spring的应用程序需要大量配置(Annotation Configuration的XML Configuration)。
那么如何解决这个问题。

这个问题的解决方案是Spring Boot AutoConfigurator。
Spring Boot AutoConfigurator的主要职责是减少Spring配置。
如果我们在Spring Boot中开发Spring应用程序,那么我们不需要定义单个XML配置,而几乎不需要或者只需很少的Annotation配置。
Spring Boot AutoConfigurator组件将负责提供这些信息。

例如,如果我们想使用Spring IO Platform声明一个Spring MVC应用程序,那么我们需要定义很多XML配置,例如视图,视图解析器等。
但是如果我们使用Spring Boot Framework,那么我们就不需要定义那些XML配置。

Spring Boot AutoConfigurator将采用此功能。

如果我们在项目构建文件中使用" spring-boot-starter-web" jar文件,则Spring Boot AutoConfigurator将自动解析视图,视图解析器等。

而且,Spring Boot减少了注释配置的定义。
如果我们在类级别使用@SpringBootApplication注释,那么Spring Boot AutoConfigurator会自动将所有必需的注释添加到Java类ByteCode中。

如果我们查阅Spring Boot Documentation,我们可以为@SpringBootApplication找到以下定义。

@Target(value=TYPE)
@Retention(value=RUNTIME)
@Documented
@Inherited
@Configuration
@EnableAutoConfiguration
@ComponentScan
public @interface SpringBootApplication

也就是说,@SpringBootApplication = @Configuration + @ComponentScan + @EnableAutoConfiration。

就是关于Spring Boot AutoConfigurate组件。
我们将在以后的文章中通过一些Spring Boot示例讨论更多细节。

注意:

  • 简而言之,Spring Boot Starter减少了构建的依赖性,而Spring Boot AutoConfigurator减少了Spring Configuration。

  • 正如我们所讨论的,Spring Boot Starter依赖于Spring Boot AutoConfigurator,Spring Boot Starter自动触发Spring Boot AutoConfigurator。

Spring Boot CLI

Spring Boot CLI(命令行界面)是一种Spring Boot软件,用于从命令提示符下运行和测试Spring Boot应用程序。
当我们使用CLI运行Spring Boot应用程序时,它会在内部使用Spring Boot Starter和Spring Boot AutoConfigurate组件来解析所有依赖关系并执行该应用程序。

我们甚至可以使用简单的Spring Boot CLI命令运行Spring Web应用程序。

Spring Boot CLI引入了一个新的" spring"命令,以从命令提示符处执行Groovy脚本。

弹簧命令示例:

spring run HelloWorld.groovy

这里的HelloWorld.groovy是一个Groovy脚本FileName。
就像Java源文件的名称具有* .java扩展名一样,Groovy脚本文件的名称也具有* .groovy扩展名。
" spring"命令执行HelloWorld.groovy并产生输出。

Spring Boot CLI组件需要许多步骤,例如CLI安装,CLI设置,开发简单的Spring Boot应用程序并进行测试。
因此,我们将专门讨论另一篇文章,并提供一些Spring Boot实例进行详细讨论。
请参阅我在Spring Boot CLI上的下一篇文章。

弹簧启动器

Spring Boot Actuator组件具有许多功能,但其中两个主要功能是

  • 为Spring Boot应用程序提供管理端点。

  • Spring Boot应用程序度量标准。

当我们使用CLI运行Spring Boot Web应用程序时,Spring Boot Actuator会自动提供主机名" localhost"和默认端口号" 8080"。
我们可以使用" https://localhost:8080 /"端点访问此应用程序。

实际上,我们使用诸如GET和POST之类的HTTP请求方法来使用Spring Boot Actuator表示管理端点。

我们将在以后的文章中讨论有关Spring Boot Actuator的更多详细信息。

Spring Boot Framework的内部

始终建议您了解Spring Boot Framework如何减少构建的依赖关系,Spring Configuration等。
SpringBoot是如何在后台运行的。

如果您熟悉Groovy编程语言,那么您将了解大多数内容。
在Groovy中,我们不需要添加一些导入,也不需要在Groovy项目中添加一些依赖项。
当我们使用Groovy Compiler(groovyc)编译Groovy脚本时,它将自动添加所有默认导入语句,然后进行编译。

同样,Groovy编程语言包含一个JAR依赖关系解析器,用于解析所有必需的jar文件并将其添加到Groovy Project类路径。

Spring Boot Framework在内部使用Groovy添加一些默认值,例如Default import语句,Application main()方法等。
当我们从CLI命令提示符运行Groovy脚本时,它使用此main()方法运行Spring Boot Application。

Grape

Grape是嵌入式依赖关系解决方案引擎。
Grape是Groovy中嵌入的JAR依赖关系管理器。
Grape让我们快速将maven信息库依赖项添加到我们的项目类路径中,以减少构建文件的定义。

Spring Boot Framework编程模型主要是受Groovy编程模型启发的。
Spring Boot Framework在内部取决于这两个主要组件:Groovy和Grape。

您可以参考Grape文档https://docs.groovy-lang.org/latest/html/documentation/grape.html了解更多详细信息。