美文网首页
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