Spring Boot指南-第二部分

开始

如果你是一个Spring Boot或者Spring的新手,这章就是专门为你定制的!这里将回答“是什么”、“怎么用”、“为什么”,我们将从如何安装Spring Boot开始介绍。在这里将开发第一个基于Spring Boot应用,也将讨论一些核心原理。

8.Spring Boot介绍

Spring Boot使开发一个可用于生产环境的基于Spring的单体应用变得十分简单,你要做的就是“just run”,运行它而已。我们集成Spring和第三方库在一起,因此你可以从最近配置开始,而且大部分Spring Boot应用仅仅需要一点点的Spring配置。

你可以使用java -jar运行Spring Boot的应用,或者使用war包部署你的应用。我们也提供了一些命令行工具集来运行它。

我们的主要目标是:

  • 为Spring开发者提供一个快速入门的经验
  • 规约重于配置
  • 减少重复性的开发,例如:内嵌容器、安全、监控、健康检查、配置等
  • 不需要XML配置文件,使用注解替代它

9.系统需求

默认情况下,1.5.16.RELEASE版的Spring Boot需要Java7以上和Spring Framework4.3.19.RELEASE以上,你也可以使用Java6,但需要额外的配置,参考“配置Java6

明确支持的构建工具

构建工具版本号
Maven3.2+
Gradle[2.9,3.x]

9.1 Servlet容器

支持的Servlet容器列表

名称Servlet版本Java版本
Tomat83.1Java7+
Tomcat73.0Java6+
Jetty9.33.1Java8+
Jetty9.23.1Java7+
Jetty83.0Java6+
Undertow1.33.1Java7+

你可以将Spring Boot应用发布到任何支持Servlet3.0+的容器中

10.Spring Boot安装

Spring Boot可以使用经典的Java开发工具安装,或者使用命令行工具安装,但是你的Java必须是1.6以上版本,你可以使用以下命令测试下:
$ java -version
如果你是一个Java开发新手,或者你仅仅是想尝试下Spring Boot,你可以尝试下Spring Boot CLI,命令行工具

10.1 安装介绍

你可以像安装标准java库的方式安装Spring Boot,就是把spring-boot-*.jar拷贝到你项目的calsspath下,Spring Boot不需要特定的集成开发工具,因此你可以使用IDE或者文本编辑器;因为Spring Boot和普通java程序比起来没有什么特别的,因此你可以像运行和调试普通程序一样运行和调试它。
尽管你可以拷贝Spring Boot jar文件到classpath下就可以使用了,但是我们强烈推荐你使用构建工具来操作,比如:Maven、Gradle

10.1.1 Maven安装

Spring Boot兼容Maven3.2以上版本,你可以跟着maven.apache.org来安装它

Spring Boot的依赖使用org.springframework.boot作为groupId,通常情况下你的pom文件继承自spring-boot-starter-parent项目,声明依赖一个或多个"Starters".Spring Boot为创建可执行jars 提供了Maven 插件
下面是一个典型的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.16.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是一个最好的途径,但是也不是适应所有情况的,有时候你需要继承不同的父pom,或者你不想使用默认的设置,可以参考"不继承父POM使用Spring Boot"

10.1.2 Gradle安装

Spring Boot支持Gradle2(2.9 以上)和Gradle3.你可以跟着www.gradle.org来安装它

Spring Boot依赖声明使用org.springframework.boot为group,通常情况下声明一个或多个"Starters"
Spring Boot提供创建可执行jars的Gradle插件

下面是一个典型的build.gradle文件:

plugins {
    id 'org.springframework.boot' version '1.5.16.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.2 安装Spring Boot CLI

Spring Boot CLI是一个工具集,可以用来快速的构建Spring应用。可以运行Groovy脚本
开发Spring Boot应用不必须使用Spring Boot CLI,但是它会是一个加快开发的方式

10.2.1 手动安装

下载地址:

10.2.2 安装SDKMAN!

SDKMAN!(开发套件)可以被用来管理SDKs的版本,包括Groovy和Spring Boot CLI的版本
下载地址:
sdkman.io
配合Spring Boot安装:

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

快速查看构建的版本

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

这将安装spring的本地实例dev,它指向到目标构建路径下,每次重新构建Spring Boot,spring都会更新到最新版本。
使用以下命令来确认:

$ sdk ls springboot

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

================================================================================
+ - local version
* - installed
> - currently in use
================================================================================
10.2.3 OSX Homebrew 安装

如果你使用的是Mac,使用了Homebrew,你需要运行下面的命令来安装Spring Boot CLI:

$ brew tap pivotal/tap
$ brew install springboot

Homebrew 将会安装spring/usr/local/bin目录下

10.2.4 MacPorts安装

如果你使用的是Mac,使用了MacPorts,运行以下命令安装Spring Boot CLI:

$ sudo port install spring-boot-cli
10.2.5 命令自动完成

Spring Boot CLI提供BASHzsh的自动完成功能,你可以source在任何的shell中,或者把它放到个人的安装目录下,在Debian系统的目录是/shell-completion/bash

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

下面的代码可以创建为app.groovy,是一个web项目,用来测试你的安装是否正确

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

运行它:
$ spring run app.groovy
一次运行因为需要编译,会比较慢,以后再访问就快了。。。

10.3 从老版本升级Spring Boot

如果你要从老版本升级,参考“project wiki

11 开发第一个Spring Boot应用

让我们从“Hello World!”开始吧!它是一个web应用,我们使用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

11.1 创建POM

我们要创建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.16.RELEASE</version>
    </parent>

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

</project>

11.2 添加依赖

Spring Boot提供了许多"Starters",你可以根据需要来添加,我们仅仅简单的添加spring-boot-starter-parentparentPOM中。这个spring-boot-starter-parent是一个默认的Maven配置,它也提供了dependency-management片段来定制version版本

因为是一个web应用,需要添加spring-boot-starter-web依赖,不过在添加之前,我们来看下我都依赖些什么?

$ mvn dependency:tree
[INFO] com.example:myproject:jar:0.0.1-SNAPSHOT

mvn dependency:tree这个命令打印你项目依赖的树形列表,你可以看到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 dependency:tree,你会看到许多的依赖被添加进项目,包括Tomcat等

11.3 编写代码

让我们创建一个java文件,Maven的java代码标准存放目录是src/main/java,你需要先创建它,然后添加一个java文件Example.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注解

@RestController是一个定型注解,便于人阅读代码,也标记Spring对类的动作。在这里代表可以接收web请求
@RequestMapping是路由信息,它告诉Spring任何的HTTP请求到“/”都应该映射到home这个方法上来。@RestController告诉Spring将结果以字符串的形式返回给调用者

11.3.2 @EnableAutoConfiguration注解

@EnableAutoConfiguration注解告诉Spring Boot基于你添加的jar依赖来猜测你想要的配置,因为spring-boot-starter-web,所以添加了Tomcat和Spring MVC,它会完成相关的设置。

11.3.3 main方法

main是一个标准的java方法,这个方法中声明了SpringApplication,调用了run方法,SpringApplication将会启动我们的程序,Spring自动配置Tomcat容器。我们需要传入Example.classrun方法,告诉SpringApplication扫描组件的路径,args参数可以传入命令行参数来触发一些动作

11.4 运行示例

在项目目录下运行mvn spring-boot:run来启动应用

$ mvn spring-boot:run
 .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::  (v1.5.16.RELEASE)
....... . . .
....... . . . (log output here)
....... . . .
........ Started Example in 2.222 seconds (JVM running for 6.514)

打开浏览器访问localhost:8080,就可以看到输出:
Hello World!
结束运行使用ctrl-c

11.5 创建可执行jar

我们需要在POM文件的dependencies片段下面添加spring-boot-maven-plugin依赖:

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

保存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.16.RELEASE:repackage (default) @ myproject ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

这个命令会在target目录下生成myproject-0.0.1-SNAPSHOT.jar。这个文件大概10MB,你可以使用jar tvf来查看它都有哪些内容
$ jar tvf target/myproject-0.0.1-SNAPSHOT.jar
在target目录下应该还有一个myproject-0.0.1-SNAPSHOT.jar.original的文件,这个是原始的jar文件,就是没有重新编译之前的jar文件
运行程序,java -jar命令:

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

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

12.接下来…

接下来第三部分将深入讲解怎么使用Spring Boot。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值