(二)Spring Boot 起步入门(翻译自Spring Boot官方教程文档)1.5.9.RELEASE

  • 查看本文英文文档,请点击 me
  • 本文将在对原英文文档进行翻译的基础上,结合做者动手实践一步步图文并茂展现给你们!
  • 小弟学识尚浅,若文章有不对的地方,请帮小弟指出,很是感谢!

第二部分 Spring Boot 入门

  • 若是你正准备入门 Spring Boot,或者一般说是‘Spring’,那这章节将是你学习的好材料。本章节将回答诸如 Spring Boot 是什么?怎么作?为何?等基本问题。你将会获得一个优雅的、关于 Spring Boot 的介绍说明以及安装文档。紧接着咱们将一块儿构建咱们的第一个 Spring Boot 应用程序并讨论一些核心的原则。

八、介绍 Spring Boot

  • Spring Boot 使你能够轻松地建立一个仅仅运行 java run(main方法) 的独立的、生产级的基于 Spring 的应用程序。咱们对Spring平台和第三方库有本身的见解,因此你能够从最小的错误代价开始学习 Spring Boot。 大多数 Spring Boot 应用程序只须要不多的Spring配置。
  • 你可使用 Spring Boot 建立一个使用 java -jar 运行的 Java 应用程序或者传统的 war 包。咱们还提供了一个运行 “spring scripts” 的命令行工具。
  • 咱们的主要目标是:
    1. 为全部Spring开发提供一个更快,更普遍的入门体验。
    2. 开箱即用,但随着需求开始偏离默认设置,快速退出(也就是本身作些其余配置)。
    3. 提供大量普遍使用的非功能特性(如嵌入式服务器,安全、指标、运行状态检查、外部配置等)
    4. 没有代码生成也不须要xml配置

九、系统要求

  • 默认状况下,Spring Boot 1.5.9.RELEASE须要 Java 7 和Spring Framework 4.3.13.RELEASE或更高版本。 您可使用带有Java 6的Spring Boot以及其余一些配置。 有关更多详细信息,请参见 Section 84.11, “How to use Java 6"。 为Maven(3.2+)和Gradle 2(2.9或更高版本)和3提供了明确的构建支持。

    虽然可使用Java 6或7的构建Spring Boot,可是咱们一般推荐使用Java 8。html

9.1 Servlet 容器

如下嵌入式servlet容器是开箱即用的:java

名称 Servlet版本 Java版本
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+
  • 您也能够将Spring Boot应用程序部署到任何与Servlet 3.0+兼容的容器。

十、安装 Spring Boot

  • Spring Boot能够与“经典”Java开发工具一块儿使用,也能够做为命令行工具安装。不管如何,您将须要Java SDK v1.6或更高版本。 在开始以前,您应该检查您当前的Java安装版本:git

    java -versiongithub

  • 若是您对Java开发不熟悉,或者您只是想尝试 Spring Boot,则可能须要先尝试 Spring Boot CLI,不然请阅读'经典'安装说明。web

尽管Spring Boot与Java 1.6兼容,但若是可能的话,应该考虑使用最新版本的Java。spring

10.一、给Java开发人员的安装说明

  • 您能够像使用任何标准Java库同样使用Spring Boot。你只需在你的类路径中包含相应的spring-boot-*.jar文件便可。Spring Boot不须要任何特殊的工具集成,因此你可使用任何IDE或文本编辑器; Spring Boot应用程序没有什么特别之处,因此您能够像运行其余任何Java程序同样运行和调试。
  • 尽管您能够拷贝Spring Boot jar包到你本身的项目中,但咱们一般建议您使用支持依赖管理的构建工具(如Maven或Gradle)。

10.1.1 Maven 安装

  • Spring Boot与Apache Maven 3.2或更高版本兼容。 若是您尚未安装Maven,您能够按照maven.apache.org上的说明进行操做。

在许多操做系统上,Maven能够经过包管理器来安装。 若是您是OSX Homebrew用户,请尝试brew install maven。 Ubuntu用户能够运行sudo apt-get install mavenapache

  • Spring Boot 依赖使用 org.springframework.boot做为groupId,一般,您的Maven POM文件将从spring-boot-starter-parent项目继承,并将依赖项声明为一个或多个“启动器Starters”。Spring Boot还提供了一个可选的Maven插件来建立可执行的jar文件。
  • 这是一个典型的pom.xml文件:
<?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.9.RELEASE</version>
    </parent>

    <!-- Add typical dependencies for a web application -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId><!-- web支持 -->
        </dependency>
    </dependencies>

    <!-- Package as an executable jar 打包成可执行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文件中继承,或者您可能不喜欢咱们的默认设置。有关使用import范围的替代解决方案,请参见Section 13.2.2, “Using Spring Boot without the parent POM”数组

10.1.二、Gradle安装

  • Spring Boot与Gradle 2(2.9或更高版本)和Gradle 3兼容。若是您还没有安装Gradle,则能够按照www.gradle.org/上的说明进行操做。
  • Spring Boot 依赖可使用 org.springframework.boot group进行声明。一般,您的项目将声明依赖关系到一个或多个Starters。 Spring Boot提供了一个有用的Gradle插件,能够用来简化依赖声明和建立可执行的jar。

    Gradle Wrapper

    Gradle Wrapper提供了一种在须要构建项目时“获取”Gradle的好方法。 这是一个小脚本和库,与代码一块儿提交以引导构建过程。 有关详细信息,请参阅docs.gradle.org/2.14.1/user…浏览器

  • 这是一个典型的build.gradle文件:
    plugins {
        id 'org.springframework.boot' version '1.5.9.RELEASE'
        id 'java'
    }
    jar {
        baseName = 'myproject'
        version =  '0.0.1-SNAPSHOT'
    }
    
    repositories {
        jcenter()
    }
    
    dependencies {
        compile("org.springframework.boot:spring-boot-starter-web")
        testCompile("org.springframework.boot:spring-boot-starter-test")
    }
    复制代码

10.二、安装 Spring Boot CLI

  • Spring Boot CLI是一个命令行工具,若是你想用Spring来快速建立原型,可使用它。它容许你运行Groovy脚本,这意味着你有一个熟悉的类Java语法,没有太多的样板代码。
  • 您能够不须要使用CLI来使用Spring Boot,但它绝对是建立Spring应用程序的最快捷方式。

10.2.一、手动安装

10.三、从早期版本的Spring Boot升级(即Spring Boot 版本的升级)

  • 若是您是从早期版本的Spring Boot进行升级,请查看project wiki上托管的“release notes”。 您会发现升级说明以及每一个版本的‘新增长、值得注意’的特性列表。
  • 要升级现有的CLI安装,请使用相应的package manager命令(例如brew upgrade),或者若是您手动安装了CLI,请按照standard instructions记住更新PATH环境变量以删除全部旧的引用。

十一、开发咱们的第一个 Spring Boot 应用程序

  • 咱们用Java开发一个简单的“Hello World!”Web应用程序,重点介绍Spring Boot的一些关键特性。 咱们将使用Maven来构建这个项目,由于大多数IDE都支持它。

    spring.io网站包含许多使用Spring Boot的“入门指南”。 若是你想解决一个特定的问题, 先在那里检查。 您能够经过转到start.spring.io并从依赖关系搜索器中选择Webstarter来快速执行如下步骤。 这将自动生成一个新的项目结构,以便您能够当即开始编码检查文档以获取更多详细信息。安全

  • 在咱们开始以前,请打开命令终端,检查是否安装了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
    复制代码

    此示例须要在其本身的文件夹中建立。 后续的说明假定你已经建立了一个合适的文件目录(其实就是标准的maven,咱们也能够经过start.spring.io自动生成项目目录,小编接下来会截图给你们看),而且保证命令行终端是你的“当前目录”(也就是项目根目录,小编是在boot目录下)。

  • 小编的目录结构以下:
    - boot
        - src
            - main
                - java
                    - Example.java
            - test
                - java
        - pom.xml
        
    复制代码

11.一、建立POM文件

  • 咱们须要从建立一个Maven pom.xml文件开始。 pom.xml是用来构建项目的配方。 打开你最喜欢的文本编辑器并添加如下内容:
    <?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.9.RELEASE</version>
    </parent>
    
    <!-- Additional lines to be added here... -->
    
    </project>
    复制代码
  • 你能够经过运行mvn package来测试构建是否正确,但注意目前所打包出来是空的包,你能够忽略譬如“jar will be empty - no content was marked for inclusion!”的警告。

    此时,您能够将项目导入IDE(大多数现代Java IDE包含对Maven的内置支持)。 为了简单起见,咱们将继续在这个例子中使用纯文本编辑器。

11.二、添加classpath依赖关系

  • Spring Boot提供了许多starters,咱们能够很方便地将jar添加到你的classpath中。 咱们的示例应用程序已经在POM的父节点中使用了spring-boot-starter-parentspring-boot-starter-parent是一个特别的starter,提供了有用的Maven默认值。 它还提供了一个dependency-management 功能,以便您能够省略version标记以得到“blessed(好的意思吧!)”的依赖关系。
  • 其余“starter”只是提供开发特定类型的应用程序(好比web嘛!)时可能须要的依赖关系。因为咱们正在开发一个Web应用程序,咱们将添加一个spring-boot-starter-web依赖项,但在此以前,咱们来看看咱们目前拥有的。
    $ mvn dependency:tree
    
    [INFO] com.example:myproject:jar:0.0.1-SNAPSHOT
    
    复制代码
  • mvn dependency:tree命令打印项目依赖项的树形表示。 你能够看到spring-boot-starter-parent自己不提供依赖关系。(也就是父项目不提供其余如web的依赖,也无论理依赖,web依赖须要咱们在本身的子项目POM文件中添加) 让咱们编辑咱们的pom.xml,并在父节的下面添加spring-boot-starter-web依赖项:
    <dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    </dependencies>
    复制代码
  • 若是你再次运行 mvn dependency:tree 命令,你会发现多出了不少的依赖项,其中就包括内嵌的 Tomcat服务器和Spring Boot自己。

11.三、开始写代码

  • 为了完成咱们的应用程序,咱们须要建立一个Java文件。 Maven默认会从src / main / java编译源代码,因此你须要建立这个文件夹结构,而后添加一个名为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);
        }
    
    }
    复制代码
  • 虽然这里没有太多的代码,但仍是有不少。 咱们来看看重要的部分。

11.3.1 @RestController@RequestMapping注解

  • 在咱们的class中,第一个注解就是@RestController。这是一个stereotype(好像是API中的一个包名)注解。这个注解给阅读这个class代码的开发人员一种提示(简单地讲就是代表这个类是什么),但对于 Spring 来讲,它代表该类扮演者一个重要的角色。在咱们的例子中,它代表咱们的类是一个web @Controller,因此Spring在处理传入的Web请求时会考虑它。
  • @RequestMapping注释提供了“路由”信息。 它告诉Spring,任何具备路径“/”的HTTP请求都应该映射到home方法。 @RestController注释告诉Spring将结果字符串直接返回给调用者。

    @RestController@RequestMapping注解是Spring MVC注释(它们不是Spring Boot特有的)。 有关更多详细信息,请参阅Spring参考资料中的MVC部分

11.3.二、@EnableAutoConfiguration注解

  • 第二个类级别的注解是@EnableAutoConfiguration。 这个注解告诉Spring Boot根据你添加的jar依赖来“猜想”你将如何配置Spring。 因为spring-boot-starter-web添加了Tomcat和Spring MVC,因此自动配置会假定你正在开发一个Web应用程序并相应地配置Spring。

    > Starters and Auto-Configuration

  • 自动配置旨在与starters配合使用,但这两个概念并不直接相关。 您能够自由选择和选择starter以外的jar依赖项,而且Spring Boot将尽其所能地自动配置到您的应用程序当中。

11.3.三、main 方法

  • 咱们的应用程序的最后一部分是 main 方法。这只是一个遵循Java约定的应用程序入口点的标准方法。 咱们的 main 方法经过调用run来委托Spring Boot的SpringApplication类。 SpringApplication将引导咱们的应用程序,开启Spring并继而转向启动自动配置的Tomcat Web服务器。 咱们须要将Example.class做为参数传递给run方法,以告知SpringApplication是Spring的主要组件。 args数组也被传递以暴露任何命令行参数。

11.四、运行咱们的应用程序

  • 到这里咱们的应用程序应该是能够运行了。因为咱们使用了spring-boot-starter-parent POM,因此咱们知道怎样找到程序运行的入口(main方法),因此咱们可使用它来启动应用程序。
    $ mvn spring-boot:run
    
    .   ____          _            __ _ _
     /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
     \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
        ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v1.5.9.RELEASE) ....... . . . ....... . . . (log output here) ....... . . . ........ Started Example in 2.222 seconds (JVM running for 6.514) 复制代码
  • 若是你打开一个web浏览器到localhost:8080你应该看到下面的输出:
    Hello World!
    复制代码
  • 要正常退出应用,按住键盘ctrl+c便可。

11.五、建立一个可执行的 jar 文件

  • 让咱们经过建立一个彻底独立的可执行jar文件来完成咱们的例子,咱们能够在生产环境中运行它。 可执行jar(有时也称为“fat jars”)是包含您编译的类以及您的代码须要运行的全部jar依赖项的归档文件。

    可执行的 jars and Java

    Java不提供任何标准的方式来加载嵌套的jar文件(即jar文件自己包含在jar中)。 若是您正在分发自包含的应用程序,这可能会有问题。 为解决这个问题,不少开发者开发了如uber jars.一个uber jar未来自不一样 jar包的类打包成一个可发布的archive。这种方法的问题在于,很难在应用程序中看到项目实际使用的库。 若是在多个jar中使用相同的文件名(但具备不一样的内容,即不一样jar种类名有可能相同嘛!),则也多是有问题的。 Spring Boot采用了不一样的方法,能够直接嵌入jar

  • 要建立一个可执行的jar文件,咱们须要将spring-boot-maven-plugin添加到咱们的pom.xml中。 在依赖关系部分下面插入如下几行:

    <build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
    </build>
    复制代码

    spring-boot-starter-parent POM中包含<executions>配置来绑定repackage目标。 若是您不使用父POM,则须要自行声明此配置。 有关详细信息,请参阅插件文档

  • 保存你的pom.xml并从命令行运行mvn package

    $ 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.9.RELEASE:repackage (default) @ myproject ---
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    复制代码
  • 若是您查看target(注:在项目目录下会生成一个target目录)目录,则应该看到myproject-0.0.1-SNAPSHOT.jar。 该文件大小应该在10 MB左右。 若是你想偷看里面究竟是什么东西,你可使用jar tvf

    $ 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.5.9.RELEASE) ....... . . . ....... . . . (log output here) ....... . . . ........ Started Example in 2.536 seconds (JVM running for 2.864) 复制代码
  • 像之前同样,要优雅地退出应用程序点击ctrl-c

十二、接下来要读什么?

  • 但愿本节为您提供了一些Spring Boot的基础知识,并帮助您编写本身的应用程序。 若是您是面向任务的开发人员,则可能须要跳至spring.io,并查看一些入门指南,以解决具体的“如何使用Spring”问题; 咱们也有Spring Boot特定的How - to指南文档。
  • Spring Boot版本库也有一些你能够运行的例子。 例子独立于代码的其他部分(也就是说,您不须要构建其他的代码来运行或使用例子)。
  • 不然,下一个逻辑步骤是阅读第三部分“使用Spring Boot”。 若是你真的不耐烦,也能够跳过来阅读Spring Boot的特性
相关文章
相关标签/搜索