美文网首页
SpringBoot译文-1-快速入门

SpringBoot译文-1-快速入门

作者: 灭BUG | 来源:发表于2018-07-05 23:13 被阅读30次

1. SpringBoot介绍

SpringBoot可以使开发者轻松地创建独立地,生产级的,基于Spring的应用程序。SpringBoot对Spring平台以及第三方库采用一些约定,使得开发者可以轻松上手SpringBoot。大多数的SpringBoot应用仅需要非常少的Spring配置。

开发者可以通过SpringBoot创建一个通过java -jar命令或传统的war包部署方式启动的Java应用程序,当然,SpringBoot也提供可以运行“Spring脚本”的命令行工具。

SpringBoot的主要目标是:

  • 为所有Spring开发提供一个更快、更广泛的入门体验
  • 开箱即用,但随着需求开始偏离默认值,快速退出
  • 提供大型项目(例如嵌入式服务器,安全性,指标,运行状况检查,外部配置)通用的一系列非功能性功能
  • 绝对不会生成代码,并且不需要XML配置

2. 系统要求

默认条件下,SpringBoot1.5.14版本要求Java7、Spring框架版本为4.3.18、Maven(3.2+)及以上,推荐使用Java8

3. 支持的Servlet容器

Name Servlet Version Java Version
Tomcat 8 3.1 Java 7+
Tomcat 7 3.0 Java 6+
Jetty 9.3 3.1 Java 8+
Jetty 9.2 3.1 Java 7+
Jetty 8 3.0 Java 6+
Undertow 1.3 3.1 Java 7+

注:你同样可以将SpringBoot应用部署在任何兼用Servlet3.0+的容器

4. Maven pom文件配置

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/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.5.14.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>
  • 上面的是SpringBoot典型的pom配置文件(你也可以通过Gradle进行构建项目)

  • spring-boot-starter-parent是使用SpringBoot的一种很好的方式,但不一定始终适用。有时候,你或许想要继承一个不同的父类pom文件,或者你不喜欢SpringBoot的配置,你可以通过Maven的import scope依赖来适用SpringBoot

5. 安装SpringBoot的命令行界面

​ Spring Boot CLI是一个命令行工具,如果你想用Spring快速建立原型,可以使用它。 它允许你运行Groovy脚本,这意味着你有一个熟悉的类Java语法,没有太多的样板代码。

​ 你不一定需要通过命令行界面来使用SpringBoot,但这绝对是一种最快实现Spring应用的方式。

5.1 手动安装

下载地方:

下载完成后,按照解压后的文件夹中的INSTALL.txt文件进行操作,总而言之:在.zip文件的bin /目录中有一个spring脚本(适用于Windows的spring.bat),或者可以使用java -jar和.jar文件(该脚本可帮助您确保类路径设置正确)。

5.2 SDKMAN方式安装

SDKMAN! (软件开发工具包管理器)可用于管理各种二进制SDK的多个版本,包括Groovy和Spring Boot CLI。 获取SDKMAN! 从sdkman.io安装Spring Boot

$ sdk install springboot
$ spring --version
Spring Boot v1.5.14.RELEASE

如果您正在开发CLI的功能并希望轻松访问您刚刚构建的版本,请按照这些额外说明进行操作

$ sdk install springboot dev /path/to/spring-boot/spring-boot-cli/target/spring-boot-cli-1.5.14.RELEASE-bin/spring-1.5.14.RELEASE/
$ sdk default springboot dev
$ spring --version
Spring CLI v1.5.14.RELEASE

这将安装称为dev实例的spring的本地实例。 它指向您的目标构建位置,因此每次重建Spring Boot时,Spring版本都是最新的。

你可以通过这样做来看到它:

$ sdk ls springboot

================================================================================
Available Springboot Versions
================================================================================
> + dev
* 1.5.14.RELEASE

================================================================================
+ - local version
* - installed
> - currently in use
================================================================================

5.3 命令行补全

Spring Boot CLI附带提供BASH和zsh shell的命令补全的脚本。在Debian系统上,系统范围的脚本在/ shell-completion / bash中,并且在新shell启动时会自动执行该目录中的所有脚本。 要手动运行脚本,例如 如果你已经安装使用SDKMAN!

$ . ~/.sdkman/candidates/springboot/current/shell-completion/bash/spring
$ spring <HIT TAB HERE>
  grab  help  jar  run  test  version

5.4 命令行快速启动例子

这是一个非常简单的Web应用程序,您可以使用它来测试您的安装。 创建一个名为app.groovy的文件:

@RestController
class ThisWillActuallyRun {

    @RequestMapping("/")
    String home() {
        "Hello World!"
    }

}

由于下载依赖关系,首次运行应用程序时需要一些时间。 后续运行会更快

在浏览器中打开localhost:8080,应该看到以下输出:

Hello World!

6. 创建第一个SpringBoot应用程序

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

在开始之前需要检查Java版本以及Maven版本

$ java -version
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)

$ mvn -v
Apache Maven 3.2.3 (33f8c3e1027c3ddde99d3cdebad2656a31e8fdf4; 2014-08-11T13:58:10-07:00)
Maven home: /Users/user/tools/apache-maven-3.1.1
Java version: 1.7.0_51, vendor: Oracle Corporation

6.1 创建pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/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.5.14.RELEASE</version>
    </parent>

    <!-- Additional lines to be added here... -->

</project>

6.2 添加依赖

SpringBoot提供很多很容易添加jar包到类路径下的Starters。我们的示例应用程序已经在POM的parent节点中使用了spring-boot-starter-parent。spring-boot-starter-parent是一个专门的提供有效的Maven默认值的Starter。

其他的Starters仅仅提供你开发特定类型的应用程序的时候需要的依赖。由于我们正在开发一个Web应用程序,因此我们将添加一个spring-boot-starter-web依赖项,但在此之前,让我们看看我们目前maven依赖关系数:

$ mvn dependency:tree

[INFO] com.example:myproject:jar:0.0.1-SNAPSHOT

mvn dependency:tree这个命令会在控制台打印出当前项目所以依赖的树形关系。你可以看到spring-boot-starter-parent本身不提供依赖关系。继续在pom.xml文件中添加如下依赖

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

如果现在重新运行mvn dependency:tree 命令,可以在很多额外的依赖,包括tomcat和spring boot。

6.3 编写代码

在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
@EnableAutoConfiguration
public class Example {

    @RequestMapping("/")
    String home() {
        return "Hello World!";
    }

    public static void main(String[] args) throws Exception {
        SpringApplication.run(Example.class, args);
    }

}

6.3.1 @RestController和@RequestMapping注解

​ 在上面的例子中,使用到@RestController注解,这是一个表示,告诉阅读代码的人和Spring,这个类扮演了一个特定的角色,是一个Controller,用于处理外来的请求。

​ @RequestMapping注解提供的请求的路径信息,它告诉Spring,这个带“/”的HTTP请求应该映射到那个地方。

6.3.2 @EnableAutoConfiguration注解

​ 这个注解告诉SpringBoot,让它去基于开发者添加的Jar包依赖,“猜测”开发者想要如何配置Spring。由于spring-boot-starter-web添加了Tomcat和Spring MVC,因此自动配置将假定开发者正在开发Web应用程序并相应地设置Spring。

​ 自动配置旨在与“Starter”配合使用,但这两个概念并不直接相关。 您可以自由选择和选择Starter之外的jar依赖项,并且Spring Boot将尽其所能自动配置您的应用程序。

6.3.3 “main”方法

程序最后一部分是main方法,这只是一个遵循Java约定的应用程序入口的标准方法。这个main方法代表SpringBoot应用程序的运行入口。SpringApplication将引导我们的应用程序,从Spring开始,它将启动自动配置的Tomcat Web服务器。我们需要将Example.class作为参数传递给run方法,以告知SpringApplication是Spring的主要组件。 args数组也被传递以暴露任何命令行参数。

7. 运行第一个SpringBoot应用程序

键入mvn spring-boot:从根项目目录运行以启动应用程序

$ mvn spring-boot:run

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

此时打开浏览器,访问localhost:8080,你会看见如下输出

Hello World!

8. 创建可执行的JAR包

执行jar包中包含编译类以及代码运行所需的所有依赖的jar包.

Java不提供任何标准的方法来加载嵌套的jar文件(即它们本身包含在jar中的jar文件)。 如果您想发布自包含的应用程序,这可能会有问题。

为了解决这个问题,很多开发者会使用"uber" jars.一个uber jar只需要将所有jar包中的类打包陈一个单独的档案.这种方法的问题在于,很难在应用程序中看到实际使用的库.如果多个jar包中存在相同的文件名,这样也有可能会出现问题.

SpringBoot提供一种不同的方式允许开发者加载嵌套的jar包.

为了创建可执行的jar包,我们需要在工程的pom文件中插入spring-boot-maven-plugin配置

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

保存pom文件之后,在控制台中输入如下命令

$ mvn package

[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building myproject 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] .... ..
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ myproject ---
[INFO] Building jar: /Users/developer/example/spring-boot-example/target/myproject-0.0.1-SNAPSHOT.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:1.5.14.RELEASE:repackage (default) @ myproject ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

查看工程根目录的target文件夹,你可以看到myproject-0.0.1-SNAPSHOT.jar文件,你可以通过命令jar tvf窥视jar包中的内容

$ jar tvf target/myproject-0.0.1-SNAPSHOT.jar

可以通过运行java -jar命令来启动程序

$ java -jar target/myproject-0.0.1-SNAPSHOT.jar

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

这样子程序就运行起来了,如果想要退出程序只需要ctrl + c即可。


注:文章翻译自SpringBoot 1.5.14参考手册,选取了部分我需要的进行翻译,如有必要,请翻阅英文文档。

相关文章

网友评论

      本文标题:SpringBoot译文-1-快速入门

      本文链接:https://www.haomeiwen.com/subject/rmvmuftx.html