Java开发人员应该知道的5个Spring Boot功能

fda766a9058fb903008a.png

Spring无疑是一个很棒的框架,它为你做了很多事情,例如它为你创建了一个对象,它为它们提供了它们的依赖性,如果Spring不存在,那么可以想象我们还需要兼容各种jar包的版本问题,但是作为回报它在配置和学习方面也向你提出了很多要求。

如果您曾经在项目中用到过Spring,那么您假如要从头开始了一个全新的基于Spring的Java应用程序,您知道这不是小菜一碟。首先需要找到所需的所有依赖项,然后找到它们的兼容版本。你还需要配置很多bean来启用一些Spring 功能。

例如,如果要在嵌入式tomcat中创建一个 支持JSON格式的基于Spring MVC的REST应用程序,那么Maven pom.xml文件中至少有8到10个依赖项,例如spring-core.jar,spring-mvc.jar, jackson.jar,embedded-tomcat.jar等,请注意这是一个非常简单的设置。

Spring Boot只是消除了所有这些痛苦,让你编写重要的代码即应用程序代码。我提到的所有Spring Boot功能,例如自动配置,Starter POM或Starter依赖项以及Spring Boot CLI旨在简化Spring的Java开发。

现在,让我们进一步了解每个功能的细节

1.自动配置

您可能使用过基于Spring的Java Web应用程序,该应用程序连接到关系数据库,例如像H2这样的内存数据库,如果是,那么您可能知道需要声明 JdbcTemplate为bean并且还需要配置一个DataSource,它是一个JdbcTempalte的依赖项。

在使用基于Java的现代Spring应用程序中, configuration您需要在
Configuration类中添加以下两个方法:


 

对于已经完成Spring开发的人来说,这并不是一件非常复杂的事情,但是如果你重新开始,那么可能需要花费数小时和数天时间来解决这个问题。

但更重要的是,这是我们许多人编写的一段代码,无论我们的应用如何。我的意思是,这段代码并不是唯一的,每个使用JDBC的Spring应用程序都需要它。

这就是Spring Boot AutoConfiguration的用武之地。它会检测Classpath中是否存在某些Class,然后自动为您配置它。

例如,如果已添加 JdbcTempalte到类路径和H2.jar中,则Spring Boot可以自动为您和可以使用的JdbcTempatle配置内存数据库。您无需编写上述代码即可 JdbcTemplate在DAO层中使用。

这只是一个例子。Spring Boot自动配置可以做出200多个这样的决定,并通过检查JAR依赖关系自动配置许多功能。例如,如果存在spring-mvc.jar,则它可以自动配置  DispatcherServlet,  InternalViewResolver等。

如果存在JPA和Hibernate,那么它也可以配置它,如果你有spring-security.jar,它甚至可以配置一个基本的安全性来保护你的应用程序。

顺便说一下,当涉及到自动配置时,需要深入的知识才能正确保护您的应用程序。

默认情况下禁用自动配置功能,您需要在Configuration类上使用 @EnableAutoConfiguration@SpringBootApplication注释启用它。我通常会注释Main类,我将使用嵌入式Tomcat服务器运行它。

建议 @SpringBootApplication从Spring Boot 1.2开始使用注释,因为它结合了其他一些注释,使您的代码更具可读性。

简而言之,Spring Boot的自动配置功能可以节省大量工作并缩短开发时间,我强烈建议您在使用Spring Boot时使用自动配置。

spring-boot-autoconfiguration.png

2.入门POM

虽然AutoConfiguration消除了配置常用功能的痛苦,但Starter POM通过在项目中查找和添加公共依赖项来消除痛苦。

为了构建一个简单的基于Spring MVC的REST应用程序,它支持  Jackson并运行它是一个嵌入式容器,你至少需要遵循依赖关系,例如

通过使用Spring Boot Starter POM或入门依赖项功能,您只需在pom.xml中添加spring-boot-starter-web依赖项即可获得所有这些功能。

因此,您只需添加一个,而不是添加所有这些依赖项并担心其兼容版本。您还将更有信心使用经过试验和测试的库版本,并且将来不会出现任何不兼容问题。

启动POM功能的另一个微妙优点是您不需要记住或搜索依赖项。如果你正在构建Web应用程序,你可以添加一个’web’启动器,如果你正在构建
JPA应用程序,你可以添加’jpa’启动器,通过按功能聚合常见的依赖关系Spring Boot使它们易于记忆和使用。

顺便说一句,如果你想知道Starter POM功能如何在内部工作,那么让我告诉你所有的魔法来自Maven或Gradle的传递依赖功能。它是Maven或Gradle,它提供了正确版本的库,Starter POM只是声明它们。如果您想了解更多信息,我建议您查看Dan Vega的Spring Boot开发课程。

简而言之,Starter POM或starter依赖是Spring Boot的另一个很棒的功能,它真正有助于简化Spring应用程序的开发。它就像是自动配置的近亲,你会经常一起使用它们。

4.-Creating-Your-First-Spring-Boot-Application-Pluralsight-course-3.png

3. Spring Boot CLI

在本文的第一段中,我说现在可以创建一个可以放入推文的Java Web应用程序,因为Groovy和Spring Boot CLI会发生这种情况。

Spring Boot CLI是Spring Boot框架提供的命令行界面,允许您使用Groovy编程语言创建基于Spring的Web应用程序。实际上,Groovy和Spring Boot很好地相互补充,Groovy旨在使Java开发更简单,而Spring Boot旨在使Spring应用程序开发更简单并且彼此的简单性都受益。

虽然自动配置和入门依赖项是Spring Boot的一个不可或缺的功能,但Spring CLI是可选的,您还需要安装Spring CLI才能使用它。

这是一个简单的Groovy和Spring Boot CLI中的HelloWorld RESTful Web服务,它可以运行,甚至可以在不编译的情况下运行,如下所示:


 

就是这样,你可以在一个嵌入式容器上运行它,它带有Spring Boot CLI,没有web.xml,没有配置,也没有服务器设置。

如果您想知道这些事情是如何工作的,那么Groovy如何了解  @RestController和 @RequestMapping注释,那么让我告诉您Spring Boot CLI利用自动配置和启动POM功能让您专注于只编写应用程序代码?

Spring Boot CLI检测 @RestController@RequestMapping正在使用它,它知道需要将哪些启动器依赖项添加到类路径中才能使其工作。

一旦下载了这些依赖项系列,自动配置就会自动启动并配置使用,例如一旦spring-boot-web-starter进入图片,它就会下载spring-mvc.jar,然后自动配置自动配置  DispatcherServlet并启用Spring MVC。

 

spring-boot-CLI.png

4.执行器

执行器是Spring Boot的另一个很棒的功能,它允许查看正在运行的Spring Boot应用程序内发生的事情。凭借其自动配置的优点,存在不知道应用程序内部的风险以及Spring Actuator解决风险的风险。

它提供了有关正在运行的应用程序的大量见解和指标。例如,通过使用Actuator,您可以确切地了解在Application上下文中配置了哪些bean,自动配置决策是什么,哪些环境变量,系统属性,命令行参数可用于应用程序等等。

您甚至可以获得应用程序处理的H​​TTP请求的跟踪,以及各种有用的应用程序指标,例如CPU和内存使用情况,垃圾收集详细信息,Web请求和数据源使用情况。

Spring Boot Actuator还提供了几个端点来检索这些数据,例如,您可以使用RESTful API获取所有这些,或者您可以使用其远程shell功能安全地进入应用程序并通过发出命令获取所有这些信息。

它还使用JMX MBean公开所有这些功能,这意味着您可以使用JConsole等JMX客户端在运行时控制它们。

同时,您还需要保护对Actuator端点的访问,因为它不仅暴露机密​​信息,而且危险。例如,任何人都可以使用/ shutdown端点来停止应用程序。

虽然,你不必担心。与任何其他Spring应用程序一样,您可以使用Spring Security来保护Actuator端点。

Learn-Spring-Security-and-REST-with-Spring-Course-Baeldung.png

5. Spring Boot Initializer

Spring Initializer是Spring Boot的另一个特性,它解决了项目结构方面的问题。它是一个Web应用程序,允许您使用Java,Kotline或Groovy和Spring Boot生成Maven或Gradle项目。

您需要指定的只是在GUI中提供Project MetaData,例如项目名称,组,工件等。它还允许您从大型列表中选择启动器依赖项,例如Web,JPA或安全启动器。

可以通过https://start.spring.io/访问Spring Initializer项目  。创建项目后,您可以下载Zip文件,然后打开像Eclipse或IntelliJ IDEA这样的IDE。

根据我的经验,许多Java和Spring开发人员面临的一个常见问题是启动一个项目。他们中的许多人对于是否放置Java文件,资源文件等毫无头绪。

虽然  Maven,Gradle,  IntelliJ IDEA和  Eclipse帮助您提供基本结构,但您仍然需要精通这两项技能才能获得先机,如果您不熟悉Maven或IDE,则可能是一场噩梦。

Spring Boot Initaizer解决了这个问题,并且可以很容易地创建一个基于Spring的Java应用程序,而无需真正了解Spring框架的许多内部细节。

这就是Java开发人员应该知道的Spring Boot的一些  基本功能。这些功能确实使Java和Spring的工作更加有趣和高效,这就是为什么越来越多的公司采用Spring Boot for Java开发的原因。具有Spring Boot经验的Java开发人员也有很好的需求,如果您正在寻找下一个作为Java Web开发人员的工作,那么Spring Boot技能可以真正发挥作用。