专栏首页Linyb极客之路Java开发人员应该知道的前5个Spring Boot特性

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

你可能听说过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
public JdbcTemplate jdbcTempalte(DateSource ds){
   return new JdbcTempalte(ds);
}
@Bean
public DataSource dataSource(){
  return new 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
class HelloSpringBootController{
  @RequestMapping("/")
  def hello() {
    return "Hello Spring Boot CLI"
   }
}

您可以在嵌入式容器上运行它,它包含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,自动配置决策是什么,哪些环境变量,系统属性,命令行参数可用于应用程序等等。 您甚至可以获得应用程序处理的HTTP请求以及各种有用的应用程序指标,例如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开发的原因。

本文分享自微信公众号 - Linyb极客之路(gh_c420b2cf6b47)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-11-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 使用Spring Boot开发的10个免费开源项目

    本文推荐一些使用Spring Boot开发的免费开源项目,可用于学习目的,能够查看源代码并获得真实项目的实践经验。除了Spring Boot,您还将学习Spri...

    lyb-geek
  • 在Spring Boot启动时运行定制的代码

    Spring Boot会自动为我们做很多配置,但迟早你需要做一些自定义工作。在本文中,您将学习如何挂钩应用程序引导程序生命周期并在Spring Boot启动时执...

    lyb-geek
  • Spring Boot十种安全措施

    lyb-geek
  • 动力节点Java学习资料最火热的极速开发框架Spring Boot

    Spring Boot是Spring家族中的一个全新的框架,它用来简化Spring应用程序的创建和开发过程,也可以说Spring Boot能简化我们之前采用Sp...

    动力节点Java学院
  • 《Spring Boot极简教程》第2章 Spring Boot简史小结参考资料

    Java Web开发涉及的技术比较繁杂,涉及到很多开发框架和工具(Java, Scala, Kotlin, Clojure,Groovy, Grails,Gr...

    一个会写诗的程序员
  • Spring,Spring MVC及Spring Boot区别

    我们说到Spring,一般指代的是Spring Framework,它是一个开源的应用程序框架,提供了一个简易的开发方式,通过这种开发方式,将避免那些可能致使代...

    用户7286770
  • 有网友说:2020年还不懂Spring就放弃Java吧?

    Spring这个词对于开发者想必不会陌生,可能你每天都在使用Spring,享受着Spring生态提供的服务,理所当然的用着SpringIOC和SpringAOP...

    程序员追风
  • 基于Spring Boot和Spring Cloud实现微服务架构学习(一)-Spring框架介绍

    看了几周Spring相关框架的书籍和官方demo,是时候开始总结下这中间的学习感悟。

    Java搬砖工人
  • Spring,Spring MVC及Spring Boot区别

    我们说到Spring,一般指代的是Spring Framework,它是一个开源的应用程序框架,提供了一个简易的开发方式,通过这种开发方式,将避免那些可能致使代...

    用户7286770
  • 晋升必会的 70 道 「Spring 全家桶」高频面试题

    《Java零基础实战》的作者宁楠主动送给了二哥 5 个兑换码,可以免费兑换《案例上手 Spring 全家桶》(价值 99 元)的 GitChat 课程哦。二哥突...

    沉默王二

作者介绍

精选专题

活动推荐

扫码关注云+社区

领取腾讯云代金券