Java开发人员应该知道的前5个Spring Boot特性

栏目: Java · 发布时间: 7年前

内容简介:你可能听说过Spring Boot,它的神奇功能可以创建一个不到140个字符的Spring Web应用程序,但这究竟意味着什么?这些功能为我们将更详细地讨论Spring Boot的自动配置,入门依赖项,Spring Boot CLI以及Actuator和Spring Initializer功能。这些功能可以消除编写基于Spring的Java Web应用程序相关的大部分痛苦和摩擦。但在进入细节之前,让我们重新审视与基于Spring的Java开发相关的问题。我个人喜欢先看问题,然后在我享受解决方案之前先感受一

你可能听说过Spring Boot,它的神奇功能可以创建一个不到140个字符的Spring Web应用程序,但这究竟意味着什么?这些功能为 Spring Boot 提供了如此强大的功能,并使Spring应用程序开发变得如此简单?那么,这就是你将在本文中学到的东西。

我们将更详细地讨论Spring Boot的自动配置,入门依赖项,Spring Boot CLI以及Actuator和Spring Initializer功能。这些功能可以消除编写基于Spring的Java Web应用程序相关的大部分痛苦和摩擦。

但在进入细节之前,让我们重新审视与基于Spring的 Java 开发相关的问题。我个人喜欢先看问题,然后在我享受解决方案之前先感受一下。请记住:努力工作后,舒适感会更好。用餐时也一样; 当你饿的时候,你会享受更多。

Spring是 - 毫无疑问 - 一个很棒的框架,它为你做了很多事情,例如它创建了一个对象,为它们提供了依赖,并且如果Spring不存在,它会带走你将要编写的大量代码,但是作为回报,它在配置和学习方面也向您提出了很多要求。

在过去,如果你从头开始一个全新的基于Spring的Java应用程序,你知道它不是小菜一碟。首先需要找到所需的所有依赖项,然后找到它们的兼容版本。你还需要配置很多bean来启用一些Spring魔法。

例如,如果要创建一个 基于Spring MVC的REST应用程序 ,它支持嵌入式Tomcat中的JSON格式,那么您可以在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并且还需要配置a  DataSource,它是JDBC模板的依赖项。

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

@Bean
<b>public</b> JdbcTemplate jdbcTempalte(DateSource ds){
   <b>return</b> <b>new</b> JdbcTempalte(ds);
}
@Bean
<b>public</b> DataSource dataSource(){
  <b>return</b> <b>new</b> EmbeddedDatabaseBuilder()
     .setType(EmbeddedDatabaseType.H2)
     .addScripts('ddl.sql', 'data.sql')
     .build();
}

对于之前在Spring有过开发的人来说,这并不是很复杂,但是如果你要重新开始,那么可能需要数小时和数天才能解决这个问题。

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

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

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

这只是一个例子。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时使用自动配置。

2.入门POM

虽然  AutoConfiguration 消除了配置常见功能的痛苦,但Starter POM通过在项目中查找和添加公共依赖项来消除引入依赖包的痛苦。为了构建一个简单的基于Spring MVC的REST应用程序,它支持 Jackson 并将其运行为嵌入式容器,您至少需要以下依赖项:

  • spring-core.jar
  • spring-web.jar
  • spring-webmvc.jar
  • jackson-databind.jar
  • tomcat-embed-core.jar
  • tomcat-embed-el.jar
  • tomcat-embed-logging-juil.jar

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

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

Start POM功能的另一个细微好处是您不需要记住或搜索依赖项。如果要构建Web应用程序,可以添加“web”启动器。如果您正在构建 JPA应用程序 ,则可以通过聚合Spring Boot易于记忆和使用的常见依赖项和功能来添加“JPA”启动程序。

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

3. 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服务,它可以在不编译的情况下运行它,如下所示:

@RestController
<b>class</b> HelloSpringBootController{
  @RequestMapping(<font>"/"</font><font>)
  def hello() {
    <b>return</b> </font><font>"Hello Spring Boot CLI"</font><font>
   }
}
</font>

您可以在嵌入式容器上运行它,它包含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。

整个事情看起来像魔术,但它实际上很容易做到。如果你喜欢这种开发模式,我建议你通过   Craig Walls的 Spring Boot in Action 来深入学习Spring CLI。克雷格非常了解这个话题。

4.Actuator

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

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

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

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

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

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

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

5. Spring Boot Initializer

Spring Initializer是Spring Boot的另一个特性,它解决了项目结构方面的问题。它是一个Web应用程序,允许您使用Java,Kotlin,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开发的原因。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Ruby on Rails Tutorial

Ruby on Rails Tutorial

Michael Hartl / Addison-Wesley Professional / 2012-8-6 / USD 44.99

"Ruby on Rails(TM) Tutorial by Michael Hartl has become a must-read for developers learning how to build Rails apps." -Peter Cooper, Editor of Ruby Inside Using Rails, developers can build web applica......一起来看看 《Ruby on Rails Tutorial》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

随机密码生成器
随机密码生成器

多种字符组合密码

html转js在线工具
html转js在线工具

html转js在线工具