Spring 框架入门教程
1. 1. Spring 框架 2. 2. Spring 5 3. 3. Spring WebFlux 4. 4. 先介绍一下 Spring 5. 5. 什么是 Spring 依赖注入 6. 6. 什么是 Spring IoC 容器 和 Bean 7. 7. Spring Bean 的生命周期 8. 8. Spring REST 开发 9. 9. Spring REST XML 10. 10. Spring RestTemplate 开发 11. 11. Spring AOP 切面编程 12. 12. Spring AOP 方法调优 13. 13. Spring 注解详解 14. 14. Spring 核心注解之 @Autowired 15. 15. Spring 核心注解之 @RequestMapping 16. 16. Spring MVC 开发样例 17. 17. Spring MVC 开发指南 18. 18. Spring MVC 异常处理机制 19. 19. Spring MVC Validator 20. 20. Spring MVC 拦截器 21. 21. Spring MVC 文件上传 22. 22. Spring MVC 国际化(i18n) 23. 23. Spring MVC Hibernate MqSQL 24. 24. Spring ORM 25. 25. Spring ORM JPA 26. 26. Spring Data JPA 27. 27. Spring 事务管理 28. 28. 常用的 Spring JdbcTemplate 29. 29. Spring Security 简介 30. 30. Spring Security 教程 31. 31. Spring Security UserDetailsService 32. 32. Spring MVC 登录注销简单案例 33. 33. Spring Security Roles 34. 34. Spring Boot Tutorial 35. 35. Spring Boot Components 36. 36. Spring Boot CLI Hello World 37. 37. Spring Boot Initilizr Web 38. 38. Spring Boot Initilizr IDE 39. 39. Spring Boot Initilizr CLI 40. 40. Spring Boot Initilizr Tools 41. 41. Spring Boot MongoDB 42. 42. Spring Boot Redis Cache 43. 43. Spring Boot 常见面试问题 44. 44. Spring Batch 45. 45. Spring Batch 批处理示例 46. 46. Spring AMQP 47. 47. Spring RabbitMQ 48. 48. Spring AMQP RabbitMQ 49. 49. Apache ActiveMQ 安装与启动 50. 50. Spring ActiveMQ 教程 51. 51. Spring ActiveMQ 示例 52. 52. Spring JDBC 53. 53. Spring DataSource JNDI 54. 54. Spring Hibernate 55. 55. Spring Primefaces JPA 56. 56. Spring Primefaces MongoDB 57. 57. Spring Primefaces Hibernate 58. 58. SpringRoo Primefaces Hibernate 59. 59. Spring JSF 60. 60. Spring JDF Hibernate 61. 61. Spring Data MongoDB 62. 62. Spring 常见面试问题

35. Spring Boot Components

在我以前的帖子里&#Spring Boot简介;,我们已经讨论了Spring Boot的基本知识。现在,我们将讨论“;Spring Boot的主要部件是”;和“;如何在发动机罩下工作“;。

Spring Boot框架的关键组件

Spring Boot框架主要有四个主要组件。

  • Spring Boot启动器
  • Spring引导自动配置程序
  • Spring启动CLI
  • Spring防尘套执行器

注:-除了这四个主要组件外,还有两个Spring引导组件:

  • Spring初始
  • Spring BootIDEs

为了快速启动新的Spring Boot项目,我们可以使用&8220;springinitializer&&8221;web界面。Spring初始值设定项URL:https://start.spring.io。

我们有很多Spring Boot IDE,比如eclipseide、intellijidea、springstsuite等,我们将在以后的文章中讨论这两个组件。

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

Spring防尘套起动器

Spring Bootstarters是Spring Boot框架的主要特性或组件之一。Spring Bootstarter的主要职责是将一组常见的或相关的依赖项组合成单个依赖项。我们将用一个例子详细探讨这一说法。

例如,我们想用tomcatwebserver开发一个springwebapplication。然后我们需要在Maven中添加以下最小的jar依赖项pom.xml文件文件或渐变生成.gradle文件

  • Spring core Jar文件(Spring core-xx.jar)
  • springwebjar文件(springweb-xx.jar)
  • springwebmvcjar文件(springwebmvc-xx.jar)
  • Servlet Jar文件(Servlet-xx.jar)

如果我们想添加一些数据库内容,那么我们需要添加与数据库相关的jar,比如jar文件、Spring Ormjar文件、springtransactionjar文件等。

  • jar文件(-xx.jar)
  • Spring Ormjar文件(Spring Orm-xx.jar)
  • Spring事务Jar文件(Spring事务-xx.jar)

我们需要在构建文件中定义许多依赖项。对于一个开发人员来说,这是一个非常乏味和繁琐的任务。它还增加了我们的构建文件大小。

在我们的构建文件中如何避免如此多的依赖关系定义?解决方案是Spring引导启动器组件。

Spring Bootstarter组件将所有相关的jar组合成一个jar文件,这样我们就可以在构建文件中只添加jar文件依赖项。我们只需要添加一个启动jar文件,而不是添加一个启动jar文件。

当我们在构建文件中添加“;Spring Bootstarterweb”;jar文件依赖关系时,Spring Boot框架将自动下载所有需要的jar并添加到我们的项目类路径中。

同样地,Spring Bootstarterlogging&&8221;jar文件会将所有它的依赖jar加载到我们的项目类路径中,比如“;jcl-over-slf4j、jul-to-slf4j、log4j-over-slf4j、logback classic”。

Spring Boot起动器的主要优点

  • Spring Bootstarter减少了定义许多依赖项简化了项目构建依赖项。
  • Spring Bootstarter简化了项目构建依赖关系。

这是关于Spring引导启动器组件的。我们将在以后的文章中讨论一些关于Spring Boot的例子。

Spring引导自动配置程序

Spring Boot框架的另一个重要的关键组件是Spring Boot自动配置器。大多数springio平台(springframework)的批评者认为,开发基于Spring的应用程序需要很多配置(无论是XML配置还是注解配置)。那么如何解决这个问题。

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

例如,如果我们想使用springio平台声明Spring Mvc应用程序,那么我们需要定义大量的XML配置,比如视图、视图解析器等,但是如果我们使用Spring Boot框架,那么我们就不需要定义这些XML配置。SpringBootAutoConfigurator将处理此问题。

如果我们在项目构建文件中使用“;Spring Bootstarterweb”;jar文件,那么Spring Boot自动配置器将自动解析视图、视图解析程序等。

而且,Spring Boot还减少了注解配置的定义。如果我们在类级别使用@SpringBootApplication注解,那么SpringBootAutoConfigurator将自动向Java类字节码添加所有必需的注解。

如果我们浏览一下Spring Boot文档,我们可以找到@SpringBootApplication的以下定义。


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

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

这是关于Spring Boot自动配置组件的。我们将在以后的文章中讨论一些关于Spring Boot的例子。

注:-

  • 简单地说,Spring Bootstarter减少了构建的依赖性,Spring Bootsautoconfigurator减少了Spring配置。
  • 正如我们所讨论的,Spring Bootstarter依赖于Spring Bootsautoconfigurator,Spring Bootstarter会自动触发Spring Bootsautoconfigurator。

Spring启动CLI

Spring Bootcli(命令行界面)是一个Spring Boot软件,用于在命令提示符下运行和测试Spring Boot应用程序。当我们使用CLI运行Spring Boot应用程序时,它在内部使用Spring Bootstarter和Spring Boot自动配置组件来解析所有依赖项并执行应用程序。

我们甚至可以用简单的Spring Bootcli命令运行springweb应用程序。

Spring Bootcli引入了一个新的“;Spring”;命令,从命令提示符执行Groovy脚本。

Spring命令示例:


spring run HelloWorld.groovy

在这里地狱世界.groovy是Groovy脚本文件名。与Java源文件名具有*.Java扩展名一样,Groovy脚本文件也具有*.Groovy扩展名。&#执行8220;spring”;命令地狱世界.groovy并产生产出。

Spring Bootcli组件需要很多步骤,比如CLI安装、CLI设置、开发简单的Spring Boot应用程序并对其进行测试。所以我们将在另一篇文章中用一些Spring Boot的例子来详细讨论它。请参考我下一篇关于Spring Bootcli的文章。

Spring防尘套执行器

Spring Boot执行器组件提供了许多功能,但有两个主要功能是

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

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

实际上,我们使用诸如GET和POST这样的HTTP请求方法来表示使用Spring Boot执行器的管理端点。

我们将在接下来的帖子中讨论更多关于Spring Boot执行器的细节。

Spring Boot框架的内部结构

建议您了解Spring Boot框架如何减少构建依赖性、Spring配置等,以及Spring Boot是如何在后台工作的。

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

同样,Groovy编程语言包含一个JAR依赖解析程序,用于解析并将所有必需的JAR文件添加到Groovy项目类路径中。

Spring Boot框架内部使用Groovy添加一些默认值,如默认的import语句、Application main()方法等。当我们从CLI命令提示符运行Groovy脚本时,它使用这个main()方法来运行Spring Boot应用程序。

葡萄

Grape是一个嵌入式依赖解析引擎。Grape是一个嵌入到Groovy中的JAR依赖关系管理器。Grape允许我们快速地将maven存储库依赖项添加到项目类路径中,以减少构建文件定义。

Spring Boot框架编程模型主要受Groovy编程模型的启发。Spring Boot框架在内部依赖于这两个主要组件:Groovy和Grape。

你可以参考Grape文档https://docs.groovy-lang.org/latest/html/documentation/grape.html更多细节。

关于Spring组件和内部构件。我们将在以后的文章中用一些Spring Boot示例详细讨论这些组件。

如果你有任何疑问,请给我留言。