1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Spring Boot (一)Spring Boot 概述

Spring Boot (一)Spring Boot 概述

时间:2020-09-30 05:24:31

相关推荐

Spring Boot (一)Spring Boot 概述

Spring Boot(一)

一 、 Spring Boot 是什么?

首先Spring Boot不是一个框架,它是一种用来轻松创建具有最小或零配置的独立应用程序的方式。这是方法用来开发基于Spring的应用,但只需非常少的配置。它提供了默认的代码和注释配置,快速启动新的Spring项目而不需要太多时间。它利用现有的Spring项目以及第三方项目来开发生产就绪(投入生产)的应用程序。它提供了一组Starter Pom或gradle构建文件,可以使用它们添加所需的依赖项,并且还便于自动配置。Spring Boot根据其类路径上的库自动配置所需的类。假设应用程序想要与数据库交互,如果在类路径上有Spring数据库,那么它会自动建立与数据源类的连接。

二、 Spring Boot 主要目标

为所有Spring开发提供一个基本的 、 更快的 、 更广泛的入门体验 。开箱即用 , 但随着需求开始偏离默认值 , 快速启动 。 提供大型项目(如嵌入式服务器 , 安全性 , 度量 , 运行状况检查 , 外部化配置)常见的一系列非功能特性 。绝对没有代码生成 , 不需要xml配置 , 完全避免xml配置为了避免定义更多的注释配置 (它将一些现有的Spring Fraework 注释组合合成一个简单的单一注释 。)避免编写大量的import语句提供一些默认值 ,以便在短时间内快速启动项目 。

三 、 新项目为什么需要Spring Boot

假设要在Spring Framework中开发一个Hello World应用程序,因为只有一个项目专用于开发Hello World功能:它就是控制器。其余的是任何使用Spring开发的Web应用程序的通用模板文件。但是如果所有Spring Web应用程序都需要它,为什么都要在每个项目中都必须提供它? 以下是新项目需要Spring Boot的理由了。

简化基于Java的应用程序开发,单元测试和集成测试过程。通过提供一些默认值来减少开发,单元测试和集成测试时间。提高生产力。当使用默认值时,Spring Boot有自己的看法。如果不指定详细信息,它将使用其自己的默认配置。如果想要持久化,但是没有在POM文件中指定任何东西,那么Spring Boot会将Hibernate带有HSQLDB数据库的配置作为JPA提供者。为大型项目(例如嵌入式服务器,安全性,度量,健康检查,外部化配置)提供许多非常常见的非功能特性/解决方案。

四 、 Spring Boot 核心和限制

Spring Boot不是编写应用程序的框架,它可以帮助我们以最少的配置或零配置开发和构建,打包和部署应用程序。它不是应用程序服务器。但是它是提供应用程序服务器功能的嵌入式servlet容器,而不是Spring Boot本身。类似地,Spring Boot不实现任何企业Java规范,例如JPA或JMS。 例如,Spring Boot不实现JPA,但它通过为JPA实现(例如Hibernate)自动配置适当的bean来支持JPA。最后,Spring Boot不使用任何形式的代码生成来完成它的功能。它是利用Spring 4的条件配置功能,以及Maven和Gradle提供的传递依赖关系解析,以在Spring应用程序上下文中自动配置bean。简而言之,Spring Boot它的核心就是Spring。未来的Spring项目不会有任何XML配置作为它的一部分,一切都将由项目Spring Boot处理。

五、 Spring Boot 的优点和缺点

优点:

使用Java或Groovy开发基于Spring的应用程序非常容易。它减少了大量的开发时间并提高了生产力。它避免了编写大量的样板代码,注释和XML配置。Spring Boot应用程序与其Spring生态系统(如Spring JDBC,Spring ORM,Spring Data,Spring Security等)集成非常容易。它遵循“自用默认配置”方法,以减少开发工作量。它提供嵌入式HTTP服务器,如Tomcat,Jetty等,以开发和测试Web应用程序非常容易。它提供CLI(命令行界面)工具从命令提示符,非常容易和快速地开发和测试Spring Boot(Java或Groovy)应用程序。它提供了许多插件来开发和测试Spring启动应用程序非常容易使用构建工具,如Maven和Gradle它提供了许多插件,以便与嵌入式和内存数据库工作非常容易。限制:

将现有或传统的Spring Framework项目转换为Spring Boot应用程序是一个非常困难和耗时的过程。它仅适用于全新Spring项目。

六、 Spring Boot 入门

Spring Boot项目归根只是一个常规的Spring项目,只是利用了Spring Boot启动程序和自动配置。要创建Spring Boot应用程序的方法,Spring团队(The Pivotal Team)提供了以下三种方法。

使用Spring Boot CLI工具使用Spring STS IDE使用Spring Initializr (网站 http://start.spring.io/)可以使用Spring Boot开发两种基于Spring的应用程序:

基于Java的应用程序基于Groovy的应用程序我们可以使用Spring Boot CLI或Spring STS IDE或Spring Initializr 网站来开发Spring Boot Groovy应用程序。 但是,我们可以使用Spring STS IDE或Spring Initializr网站来开发Spring Boot Java应用程序。无论如何,Groovy也是JVM语言几乎类似于Java语言。可以将Groovy和Java组合成一个项目。因为就像Java文件一样,Groovy文件最终只能编译成.class 文件。.groovy 和.java 文件都转换为.class 文件(相同字节代码格式)。Spring Boot框架编程模型的灵感来自Groovy编程模型。 Spring Boot在内部使用一些基于Groovy的技术和工具来提供默认的导入和配置。Spring Boot框架还将现有的Spring Framework注释组合为一些简单或单个注释。 我们将在后面的帖子中逐个探索这些注释,并附带一些实时示例。Spring Boot框架将Spring-Java应用程序编程模型彻底改变为新的编程模型。到目前为止,Spring Boot只处于初始阶段,但未来肯定都使用Spring Boot。

Spring Boot CLI

它是使用Spring Boot的最简单和最快速的方法。它是一个用于执行groovy脚本的命令行工具。可以按照以下步骤安装此工具:

从这里下载此项目的二进制发行版。 Spring Boot CLI需要Java JDK V1.6或更高版本才能运行。 Groovy v2.1作为此分发包的一部分进行打包,因此不需要安装(任何现有的Groovy安装都将被忽略)如果解压zip文件,就会发现spring.bat将检查所有的设置。此脚本可以在目录/bin下找到。下载Spring Boot CLI Zip文件到本地文件系统,并将spring-boot-cli-1.4.3.RELEASE.zip文件解压缩到本地文件系统中,在本实例中我们解压到 D:\software\yiibai\spring-1.4.3.RELEASE 目录下。右键“我的电脑”->”高级系统设置”->”高级”->”环境变量”->选择”PATH”并新建并加上面的路径D:\software\yiibai\spring-1.4.3.RELEASE\bin;。如下图所示 -

执行以下命令验证安装结果 -

C:\Users\Administrator>spring --versionSpring CLI v1.4.3.RELEASE

现在Spring Boot CLI安装过程已成功完成。在讨论Spring Boot “HelloWorld”示例之前,首先要确定从命令提示符运行Groovy脚本是否正确。

Spring Boot “Spring”命令

Spring Boot CLI提供了一个“spring”命令,用来从命令提示符运行Spring Boot Groovy脚本。Spring Boot 的“spring –help”命令有很多选项,可以将此命令用于不同的目的。其中有一个重要的选项是“run”选项。

spring run

Spring Boot 的 Hello World 实例

可以用Spring Boot开发两种基于Spring的应用程序

Groovy应用程序Java应用程序

Grovvy程序:

在本地文件系统中创建一个“HelloWorld”文件夹,放置groovy脚本,这里放在 D:\software\yiibai\spring-1.4.3.RELEASE 目录下。

使用以下内容开发Groovy脚本文件。

@RestControllerclass HelloWorld {@RequestMapping("/")String hello() {"Hello JournalDev World."}}

将此文件命名为HelloWorld.groovy,这里的“.groovy”扩展名是必须的。

现在Spring Boot Hello World示例已准备好使用Spring MVC Rest控制器。运行和测试这个例子来了解Spring Boot框架。在本地文件系统中的“HelloWorld”文件夹中打开命令提示符。执行以下命令 -

spring run HelloWorld.groovy

当执行“spring run HelloWorld.groovy”时,它会启动嵌入的Tomcat服务器的默认端口号:8080。现在Spring Boot Hello World示例应用程序已启动并正在运行。下面打开浏览器来测试一下。打开浏览器并访问以下链接。访问此URL:http://localhost:8080/

七 、 Spring Boot 安装

在安装之前确保 机器中已经安装了JDK1.6 及以上版本如果你是一个Java 新手 , 或者你只想体验Spring Boot , 你可以首先尝试Spring Boot CLI可以使用与标准Java库的方式来使用Spring Boot。只需在类路径中包含适当的spring-boot-*.jar文件即可。 Spring Boot不需要任何特殊工具集成,因此可以使用任何IDE或文本编辑器; 并且Spring Boot应用程序没有什么特别之处,因此您可以像任何其他Java程序一样运行和调试。虽然可以直接复制 Spring Boot.jar 但是还是建议使用一个依赖管理工具 maven

使用maven 安装 Spring Boot

Spring Boot 与maven 3.2 版本及以上兼容 。Spring引导依赖项groupId使用org.springframework.boot。 通常Maven POM文件将继承自spring-boot-starter-parent项目,并将依赖性声明为一个或多个“Starters”。 Spring Boot还提供了一个可选的Maven插件来创建可执行jar。

一个典型的pom.xml 文件的内容:

<?xml version="1.0" encoding="UTF-8"?><project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>myproject</artifactId><version>0.0.1-SNAPSHOT</version><!-- Inherit defaults from Spring Boot --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.4.3.RELEASE</version></parent><!-- Add typical dependencies for a web application --><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies><!-- Package as an executable jar --><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

spring-boot-starter-parent是使用Spring Boot的一个很好的方法,但它可能并不适合所有的时候。 有时可能需要从不同的父POM继承,或者可能只是不喜欢默认设置。

安装Spring Boot CLI

Spring Boot CLI是一个命令行工具,如果想要使用Spring快速原型化,可以使用它。它允许运行Groovy脚本,它有一个类似Java的语法,没有那么多的样板代码。不一定需要CLI来使用Spring Boot,但它绝对是让Spring应用程序实现的最快捷方式。 具体安装方式 参考上文 。

八 、 Spring Boot 应用程序开发入门

在Java中开发一个简单的“Hello World!” Web应用程序,突出一些Spring Boot的主要特性。在这里将使用Maven来构建这个项目,因为大多数IDE支持它。

开始之前,打开一个终端,检查是否安装了Java和Maven的有效版本。

C:\Users\Administrator>java -versionjava version "1.8.0_65"Java(TM) SE Runtime Environment (build 1.8.0_65-b17)Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)C:\Users\Administrator>mvn -vApache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; -11-11T00:41:47+08:00)Maven home: D:\worksp\\apache-maven-3.3.9Java version: 1.8.0_65, vendor: Oracle CorporationJava home: D:\Program Files\Java\jdk1.8.0_65\jreDefault locale: zh_CN, platform encoding: GBKOS name: "windows 10", version: "10.0", arch: "amd64", family: "dos"

此示例需要在其自己的文件夹中创建。后续说明假定您已创建了一个合适的文件夹,并且它是“当前目录”。

创建POM.XML文件 : 我们需要从创建一个Maven pom.xml文件开始。pom.xml是将用于构建项目的配置,在这个示例中,把它放在 D:\spring-boot\pom.xml 。打开您喜欢的文本编辑器并添加以下内容:

<?xml version="1.0" encoding="UTF-8"?><project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>myproject</artifactId><version>0.0.1-SNAPSHOT</version><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.4.3.RELEASE</version></parent><!-- Additional lines to be added here... --></project>

它给出了一个工作构建,可以通过运行mvn package(可以忽略“jar will be empty - no content was marked for inclusion!”现在警告)测试它。

添加类路径依赖项

Spring Boot提供了一些“启动器”,使得容易添加 jar 到你的类路径。在我们的示例应用程序已经在POM的父部分中使用了spring-boot-starter-parent。spring-boot-starter-parent是一个特殊的启动器,提供了有用的 Maven 默认值。 它还提供了一个依赖关系管理部分,以便您可以省略“blessed”依赖关系的 version 标签。其他“Starters”只是提供了在开发特定类型的应用程序时可能需要的依赖关系。由于我们正在开发一个web应用程序,将添加一个spring-boot-starter-web依赖关系。 可以通过 mvn dependency:tree 查看依赖树以解决jar包冲突问题

可以看到spring-boot-starter-parent本身不提供依赖关系。现在编辑 pom.xml 文件,并在parent部分的下面添加spring-boot-starter-web依赖关系:

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies>

再次运行 mvn denpendency:tree 命令 , 将看到现在有许多的其他依赖项 , 包括Tomcat web服务器和Spring Boot 本身 。

编写代码

我们需要创建一个单一的Java文件。Maven将默认从src/main/java编译源代码,所以需要创建该文件夹结构,然后添加一个名为src/main/java/Example.java的文件,完整的文件路径是 D:/spring-boot/src/main/java/Example.java,代码如下所示:

import org.springframework.boot.*;import org.springframework.boot.autoconfigure.*;import org.springframework.stereotype.*;import org.springframework.web.bind.annotation.*;@RestController@EnableAutoConfigurationpublic class Example {@RequestMapping("/")String home() {return "Hello World!"; // Copyright: w w w . y i I b A i.c O m }public static void main(String[] args) throws Exception {SpringApplication.run(Example.class, args);}}

虽然这里没有太多的代码,但背后有很多事情正在发生。让我们看看代码的重要部分。

@RestController 和 @RequestMapping注解

Example类的第一个注解是@RestController。这称为构造型注释,它为阅读代码的人提供了提示,对于Spring,该类扮演了一个特定的角色。在这种情况下,这个类是一个web @Controller,因此Spring会在处理传入的Web请求时考虑它。@RequestMapping注解提供了“路由”信息。它告诉Spring任何带有路径“/”的HTTP请求应该映射到home方法。@RestController注解告诉Spring将生成的字符串直接返回给调用者。@RestController和@RequestMapping注解是Spring MVC注释(它们不是Spring Boot特有的)。@EnableAutoConfiguration注解

第二个类级别注解是@EnableAutoConfiguration。这个注解告诉Spring Boot“猜测”将如何配置Spring,它是基于添加的jar依赖。 由于spring-boot-starter-web添加了Tomcat和Spring MVC,因此自动配置将假设正在开发一个Web应用程序并相应地设置Spring。“main”方法

应用程序的最后一部分是主(main)方法。 这只是一个遵循Java约定的应用程序入口点的标准方法。main方法通过调用run来委托Spring Boot SpringApplication类。SpringApplication将引导应用程序,启动Spring,从而启动自动配置Tomcat Web服务器。需要传递Example.class作为run方法的参数来告诉SpringApplication,这是主要的Spring组件。args数组也被传递以暴露任何命令行参数。

运行代码

现在,我们的应用程序应该可以正常运行工作了。由于 POM 中使用了spring-boot-starter-parent,有一个有用的 run 目标,用它来启动应用程序。输入 mvn spring-boot:run 从根项目目录启动应用程序:

. _____ __ _ _/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \\\/ ___)| |_)| | | | | || (_| | ) ) ) )' |____| .__|_| |_|_| |_\__, | / / / /=========|_|==============|___/=/_/_/_/::Spring Boot:: (v1.4.3.RELEASE)....... . . ........ . . . (log output here)....... . . ......... Started Example in 2.222 seconds (JVM running for 6.514)

如果打开Web浏览器访问 http://localhost:8080 , 应该会看到以下输出:

创建可执行jar

现在,我们来完成一个例子,创建一个完全自包含的可执行jar文件,可以在生产中运行。可执行jar(有时称为“fat jar”)是包含编译的类以及需要运行的所有jar依赖性的代码存档。

可执行jar和JavaJava不提供任何标准方法来加载嵌套的jar文件(即包含在jar中的jar文件)。如果想要分发一个自包含的应用程序,这可能是有问题的。为了解决这个问题,许多开发人员使用“uber” jar。 一个uber jar简单地将所有类,从所有jar到一个单一的归档。这种方法的问题是,很难看到实际上在应用程序中使用哪些库。如果在多个jar中使用相同的文件名(但是具有不同的内容),它也可能是有问题的。Spring Boot采用不同的方法,并允许直接嵌套JAR。要创建可执行的jar,需要将spring-boot-maven-plugin添加到pom.xml文件中。 在dependencies部分下面插入以下行:<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>

POM 中 spring-boot-starter-parent 包括配置以绑定 repackage 目标。如果不使用父POM,则需要自己声明此配置。有关详细信息,请参阅插件文档。

在 target 目录中,应该看到一个myproject-0.0.1-SNAPSHOT.jar文件。文件大小应为10 Mb左右。如果想看里面内容,可以使用jar tvf:

【Linux环境下】jar tvf target/myproject-0.0.1-SNAPSHOT.jar

应该在target目录中看到一个名为myproject-0.0.1-SNAPSHOT.jar.original的文件。这是Maven在Spring Boot重新打包之前创建的原始jar文件。

要运行该应用程序,请使用java -jar命令:

java -jar target/myproject-0.0.1-SNAPSHOT.jar. _____ __ _ _/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \\\/ ___)| |_)| | | | | || (_| | ) ) ) )' |____| .__|_| |_|_| |_\__, | / / / /=========|_|==============|___/=/_/_/_/::Spring Boot:: (v1.4.3.RELEASE)....... . . ........ . . . (log output here)....... . . ......... Started Example in 2.536 seconds (JVM running for 2.864)

如果打开Web浏览器访问 http://localhost:8080 , 应该会看到以下输出:第一个Spring Boot 引用程序开发完成 。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。