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

您可能已经听说过Spring Boot,这是用不到140个字符创建一个Spring Web应用程序的神奇力量,可以在一条推文中编写这些字符,但这到底意味着什么? 哪些功能可以使Spring Boot具有如此强大的功能并使Spring应用程序开发如此容易? 好吧,这就是您将在本文中学到的内容,但是如果您急着让我告诉您,您将详细了解Spring Boot的自动配置,Starter依赖项,Spring Boot CLI,Actuator和Spring Initializer功能。 这些功能消除了编写基于Spring的Java Web应用程序所带来的大部分痛苦和磨擦。

但是,在进行详细介绍之前,让我们重新回顾与基于Spring的Java开发相关的问题。 我个人希望先看到问题,然后才能享受解决方案。 请记住,只有经过艰苦的努力,舒适才会感觉更好,一顿饭也是如此,饥饿时您会享受更多。

毫无疑问,Spring是一个很棒的框架,它可以为您做很多事情,例如,它为您创建了一个对象,为它们提供了相关性,如果Spring不存在,它会带走您可能编写的许多代码,但作为回报它在配置和学习方面也要求您很多。

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

例如,如果您要创建一个基于Spring MVC的REST应用程序 ,该应用程序在嵌入式tomcat中支持JSON格式,则您的Maven pom.xml文件(例如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的configuration的现代Spring应用程序中,您需要将以下两种方法添加到您的
配置类:

@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,然后自动为您配置它。

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

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

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

顺便说一句,当涉及到自动配置时,需要深入的知识来适当地保护您的应用程序。

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

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

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

Spring Boot功能

2.入门级POM

尽管自动配置消除了配置通用功能的麻烦,但Starter POM通过在项目中查找和添加通用依赖关系而减轻了痛苦。

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

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依赖项就可以获取所有这些信息

因此,您无需添加所有这些依赖项并担心它们的兼容版本,只需添加一个即可。 您还将更加自信地使用了久经考验的库版本,将来不会出现任何不兼容性问题。

入门POM功能的另一个细微优点是您无需记住或搜索依赖项。 如果要构建Web应用程序,则可以添加“ Web”启动器(如果要构建)
JPA应用程序可以通过按功能聚合常见的依赖项来添加“ jpa”启动程序,Spring Boot使它们易于记忆和使用。

顺便说一句,如果您想了解Starter POMs功能在内部如何工作,那么让我告诉您所有魔术都来自Maven或Gradle的传递依赖项功能。 是Maven或Gradle提取正确版本的库,Starter POM只是声明它们。 如果您想了解更多信息,建议您阅读Dan Vega的Spring Boot快速应用程序开发课程。

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

Spring Boot功能

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服务,它即使不进行编译也可以运​​行,如下所示:

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

就这样,您可以在Spring Boot CLI附带的嵌入式容器上运行它,无需web.xml,无需配置,也无需服务器设置。

如果您想知道这一切的工作原理,例如Groovy如何了解@RestController和@RequestMapping注释,那么让我告诉您Spring Boot CLI利用自动配置和启动程序POMs功能让您专注于仅编写应用程序代码?

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

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

整件事看起来像是魔术,但这是现实。

Spring Boot功能

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端点。

Spring Boot功能

5. Spring Boot初始化器

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

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

可以从https://start.spring.io/访问Spring Initializer项目。 创建项目后,您可以下载Zip文件,然后按Nelson Djalo的Spring Boot Essential课程中的说明打开到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进行Java开发的原因。 对具有Spring Boot经验的Java开发人员的需求也很高,如果您正在寻找下一个Java Web开发人员的工作,那么Spring Boot的技能确实会有所作为。

到目前为止,非常感谢您阅读本文。 如果您喜欢这些Spring Boot功能,请与您的朋友和同事分享。 如果您有任何疑问或反馈,请留言

翻译自: https://www.javacodegeeks.com/2018/11/spring-features-java-developers-know.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/344796.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 使用本机代理_Java与本机代理–他们所做的强大功能

java 使用本机代理在安装代理之前应了解的内容及其对代码的影响 在构建可伸缩的服务器端应用程序时,我们花费大量时间思考如何在生产中监视,操作和更新代码。 已经开发出一种新的工具来帮助Java和Scala开发人员做到这一点。 它们中的许多都是建立在最强大…

【渝粤教育】广东开放大学 企业会计准则应用实务形成性考核 (41)

选择题 题目:当非货币性资产交换同时满足“交换具有商业实质”和“换入资产或换出资产的公允价值能够可靠地计量”两个条件时,应当以公允价值和应支付的相关税费作为换入资产的成本,公允价值与换出资产账面价值的差额计入当期损益。 答案&…

在任何无法理解的情况下,请编写脚本

脚本编写是使您的应用程序在运行时就可以根据客户需求进行调整的最流行的方法之一。 与往常一样,此方法不仅带来好处,例如,在灵活性和可管理性之间存在众所周知的折衷方案。 本文不是从理论上讨论优缺点的文章之一,而是从实践上展…

【渝粤教育】广东开放大学 公共关系实务 形成性考核 (37)

选择题 题目: 请指出以下哪些言论具有公共关系意识( ) 选择一项或多项: 答案:看左侧 题目: 公共关系传播媒介,从其物质形式看有( ) 选择一项或多项: 答案&a…

【渝粤教育】广东开放大学 地基与基础 形成性考核 (27)

选择题 题目:土的三相比例指标包括:土粒比重、含水量、密度、孔隙比、孔隙率和饱和度,其中为实测指标。 答案:看左侧 题目:条形均布荷载中心线下,附加应力随深度减小,其衰减速度与基础的宽度b有…

【渝粤教育】广东开放大学 社会调查与方法 形成性考核 (35)

选择题 题目:社会调查的本质是( ) 题目:从所研究的总体屮,按照一定的方式选取一部分个体进行调查,并将在这部分个体中所得到的调查结果推广到总体中去,这种调查是( )…

下载anaconda时出现“Please make sure you are connected to the internet”警告

如题,在anaconda下载过程中下载VScode时出现下图的警告。 百度翻译: 顺着图中指定文件路径,找到vscode_inst.py.log文件(注:有些人ProgramData文件夹可能找不到,打开任意文件夹,点击查看&…

【渝粤教育】广东开放大学 Linux操作系统 形成性考核 (55)

选择题 题目: 以下哪个不属于操作系统? 答案:看左侧 题目: 以下描述正确的是? 答案:看左侧 题目: 使用gcc编译后的目标文件一般以什么名称结尾? 答案:看左侧 题目&#x…

多个公证员提高网络吞吐量

您是否需要非常高吞吐量的Corda网络? 网络的吞吐量是否稳定? 您是否已经从其他领域挤出了所有可能的表现? 如果您对这些问题的回答是“是”,那么我可能会为您提供一些有用的信息。 我列出了这些问题,以减少您过早优化C…

初识FPGA(搬运)

原文链接1原文链接2 fpga简介 FPGA(Field-Programmable Gate Array), 即现场可编程门阵列,它是在PAL(可编程阵列逻辑)、GAL(通用阵列逻辑器件)、CPL(复杂可…

【渝粤教育】广东开放大学 会展营销 形成性考核 (56)

选择题 题目:以下哪一个选项不属于市场定位的内容? 答案:看左侧 题目:以下哪一个选项不是会展营销调研的程序? 答案:看左侧 题目:以下哪一个选项不是市场定位的原则? 答案&#xff1…

【渝粤教育】广东开放大学 劳动人事争议处理法 形成性考核 (51)

选择题 题目: 下列哪一选项属于劳动人事争议?( ) 选择一项: 答案:看左侧 题目: 仲裁委员会的主任由( )担任。 选择一项: 答案:看左侧 题目…

【渝粤教育】广东开放大学 土地力学与地基基础 形成性考核 (32)

选择题 题目:7,地下科能(流入)与排泄(浦出)条件以及土中水的渗透速度都与土的有关 题目:8在非均质土层中,土的坚向自重应力沿深度的分布规律是( )。 题目:10某粘性土的I,≤0,该土的物理状态为( )。 题目:1地震时产生的…

蓝桥杯小白系列之汇编点亮led灯

蓝桥杯小白系列之汇编点亮led灯 1、源代码 2、逐条分析 (1)ORG 0000H (2)START: 伪指令,编译器可识别,单片机不可识别,可以随便起。 (3)蜂鸣器设置 蓝桥板插电以后蜂鸣器常会自动响起,故在程序前提前加上如下代码,让蜂鸣器不响: mov P2,#0A0H mov P0,#000H 参照…

带有Oracle Digital Assistant和Fn Project的会话式UI。 第二部分

在上一篇文章中,我使用Oracle Digital Assistant为FlexDeploy实现了一个对话式UI。 今天,我将用Fn Flow丰富它,以便聊天机器人接受发行名称而不是ID来创建快照。 完成后,对话听起来会更加自然: … “您可以建立快照吗…

小白系列之51单片机的入门速成法

51单片机的入门速成法 01-经典51内核资源全览浓缩图 02-重要外设特殊功能寄存器概览 03-程序开发流程与设计要点 04-三大外设的开发与可重用代码 05-应用程序设计入门一例通 01-经典51内核资源全览浓缩图 <1> 四组8位并行I/O端口&#xff1a; P0端口&#xff1a;PC门&a…

【渝粤教育】广东开放大学 工程经济 形成性考核

选择题 题目&#xff1a; 单选 下列是年金现值系数表示符号的是&#xff08;&#xff09; 答案&#xff1a;看左侧 题目&#xff1a; 单选 某施工企业现在对外投资200万元&#xff0c;5年后一次性收回本金和利息&#xff0c;若年基准收益率为8%&#xff0c;则总计可以收回资…

Hibernate事实:集成测试策略

我喜欢集成测试&#xff0c;这是检查Hibernate生成哪些幕后花絮SQL查询的好方法。 但是集成测试需要运行的数据库服务器&#xff0c;这是您必须要做的第一选择。 1.使用类似生产的本地数据库服务器进行集成测试 对于生产环境&#xff0c;我始终喜欢使用增量DDL脚本&#xff0c…

【渝粤教育】广东开放大学 插画与漫画 形成性考核 (27)

选择题 题目&#xff1a;先从整体开始绘制的一般顺序是 题目&#xff1a;正常头身比角色转化为Q版角色&#xff0c;基本可以用几个词说完&#xff0c;那就是 题目&#xff1a;影响衣服皱褶的的因素有 题目&#xff1a;关于女性漫画人物正面面部特征&#xff0c;以下说法正确的是…

蓝桥杯基础模块1:LED跑马灯

一、模块题目 二、原理简述 1、74HC138:三八译码器(3个输入,8个输出) 2、74HC573:锁存器(20个引脚,D1D8是数据输入端,Q1Q8是数据输出端&#