如果您刚开始接触Spring Boot,或者简称’Spring’, 这个部分对您来说非常有用。这个部分提供了“是什么?”,“怎么做?”和 “为什么?”的解释。您除了会阅读一份附带Spring Boot安装说明的介绍,还会引导您创建第一个Spring Boot应用程序,顺便讲述一些核心原则。

百牛信息技术bainiu.ltd整理发布于博客园

1.Spring Boot简介
2.系统要求
2.1.Servlet容器
3.安装Spring Boot
3.1.Java开发者使用的安装教程
3.1.1.Maven安装
3.1.2.Gradle安装
3.2.安装Spring Boot CLI
3.2.1.手动安装
3.2.2.使用SDKMAN!安装
3.2.3.OSX Homebrew 安装
3.2.4.MacPorts安装
3.2.5.命令行补全工具
3.2.6.快速开始Spring CLI实例
3.3.升级旧版本的Spring Boot
4.开发第一个Spring Boot应用程序
4.1.创建POM
4.2.添加classpath依赖
4.3.编写代码
4.3.1.@RestController和@RequestMapping注解
4.3.2.@EnableAutoConfiguration注解
4.3.3.“main” 方法
4.4.运行这个例子
4.5.创建可执行jar文件
5.接下来阅读什么

1. Spring Boot简介

Spring Boot使创建基于Spring的应用程序变得轻松,您只需要做到“just run”就能创建一个独立的、产品级别的Spring应用程序。我们为Spring平台及第三方库提供了相对固定的搭配,所以您开始的时候会轻松很多。大部分的SpringBoot应用程序都只需要很少的Spring配置。

您可以使用SpringBoot创建应用程序,通过java -jar命令或者传统的war包部署方式来启动它。我们也提供了一个命令行工具来运行“spring脚本”。

我们的目标是:

  • 从根本上提供更加快速和简便的Spring开发体验。
  • 开箱即用,但定制开发也很便捷。
  • 提供一些大型项目常用的非功能性特性(例如:嵌入式服务、安全、监控、健康检查、外部配置)。
  • 不用生成代码,没有xml配置。

2. 系统要求

一般情况下,Spring Boot1.4.1.BUILD-SNAPSHOT要求Java 7以及 Spring Framework 4.3.3.BUILD-SNAPSHOT或者更高版本。您可以在Java 6的环境下使用Spring Boot,但是需要一些额外的配置。访问Section 80.11, “How to use Java 6″获得更多详细说明。需要明确的是,Maven需要3.2或者更高版本,Gradle需要1.12或者2.x。Gradle 3 不支持。

Tip
虽然您可以在Java 6或者7下使用Spring Boot,但我们一般还是建议尽可能的使用Java 8。

2.1 Servlet容器

下面的嵌入式Servlet容器可以直接使用:

名称 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+

您也可以在兼容Servlet 3.0+ 的容器中部署Spring Boot 应用。

3. 安装Spring Boot

Spring Boot可以和“经典的”Java开发工具一起使用,也可以安装成一个命令行工具。无论如何,您需要Java SDK v1.6或者更高的版本。开始之前,确认一下您的Java版本:

$ java -version

如果您是Java开发新手,或者您只是想体验一下Spring Boot,
第一步您可以选择去Spring Boot CLI 试一试。或者,继续看“经典的”安装介绍。

Tip
虽然Spring Boot可以兼容Java 6,但是还是尽可能使用最新版本的Java。

3.1 Java开发者使用的安装教程

您可以像使用其他标准Java库一样使用Spring Boot。只需要将相关的spring-boot-*.jar文件包含进您的classpath。Spring Boot不需要使用特殊的工具进行集成,因此您选择任何IDE或者文本编辑器都可以;并且Spring Boot应用程序也没有任何特殊规范,您可以像其他Java程序一样来运行和调试它。

虽然您可以复制Spring Boot jars,但是我们建议使用支持依赖管理的构建工具(比如Maven或者Gradle)。

3.1.1 Maven安装

Spring Boot与Apache Maven 3.2或者更高的版本兼容。如果您还没有安装Maven,可以去maven.apache.org阅读相关教程。

Tip
很多操作系统可以使用包管理工具来安装Maven,苹果的OSX操作系统Homebrew使用者可以试试brew install maven。Ubuntu用户可以运行这个命令sudo apt-get install maven

Spring Boot 依赖的groupIdorg.springframework.boot。通常情况下,您的MavenPOM文件继承自spring-boot-starter-parent项目,并且声明为一些“Starters”。Spring Boot也提供了一些创建可执行jar文件的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> <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.1.BUILD-SNAPSHOT</version>
</parent> <!-- Additional lines to be added here... --> <!-- (you don't need this if you are using a .RELEASE version) -->
<repositories>
<repository>
<id>spring-snapshots</id>
<url>http://repo.spring.io/snapshot</url>
<snapshots><enabled>true</enabled></snapshots>
</repository>
<repository>
<id>spring-milestones</id>
<url>http://repo.spring.io/milestone</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-snapshots</id>
<url>http://repo.spring.io/snapshot</url>
</pluginRepository>
<pluginRepository>
<id>spring-milestones</id>
<url>http://repo.spring.io/milestone</url>
</pluginRepository>
</pluginRepositories>
</project>
Tip
继承spring-boot-starter-parent项目是不错的使用Spring Boot的方式,但是有时候可能还是有不适配的问题。有些时候您可能需要继承子不同的父POM,或者仅仅是和我们的默认配置有所区别。查看Section 13.2.2, “Using Spring Boot without the parent POM”,这是使用了导入方式的一种解决方案。

3.1.2 Gradle安装

Spring Boot与Gradle 1.12或者更高的版本兼容。如果您还没有安装Gradle,可以去www.gradle.org/阅读相关教程。

Spring Boot依赖的grouporg.springframework.boot。一般情况下,您的项目可能需要为一个或多个“Starters”声明依赖项。Spring Boot提供了一些不错的Gradle插件,可以用来简化依赖声明和创建可执行的jar文件。

Gradle包装器

构建项目的时候,Gradle包装器提供了一种友好的“obtaining” Gradle的方式。它提供了一些小型的脚本和库,可以和您的代码一起提交来引导构建流程。详细情况,可以访问:docs.gradle.org/2.14.1/userguide/gradle_wrapper.html。

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

buildscript {
repositories {
jcenter()
maven { url "http://repo.spring.io/snapshot" }
maven { url "http://repo.spring.io/milestone" }
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.4.1.BUILD-SNAPSHOT")
}
} apply plugin: 'java'
apply plugin: 'spring-boot' jar {
baseName = 'myproject'
version = '0.0.1-SNAPSHOT'
} repositories {
jcenter()
maven { url "http://repo.spring.io/snapshot" }
maven { url "http://repo.spring.io/milestone" }
} dependencies {
compile("org.springframework.boot:spring-boot-starter-web")
testCompile("org.springframework.boot:spring-boot-starter-test")
}

3.2 安装Spring Boot CLI

Spring Boot CLI是一个命令行工具,如果想要快速获取一个Spring样品程序,可以使用到它。Spring Boot CLI是一个命令行工具,如果想要快速获取一个Spring样品程序,可以使用到它。有了它,您可以运行Groovy脚本,这意味着您可以使用熟练的类Java语法,而不是超多的样板代码。

使用CLI这个命令行工具来做Spring Boot开发并不是必须的,但它确实是一个开发Spring应用程序最快捷的方式。

3.2.1 手动安装

到Spring软件仓库下载Spring CLI的发布包:

  • spring-boot-cli-1.4.1.BUILD-SNAPSHOT-bin.zip
  • spring-boot-cli-1.4.1.BUILD-SNAPSHOT-bin.tar.gz

也可以去snapshot distributions下载最新的快照发布版本。

下载以后,阅读一下解压缩包里面的说明文档:INSTALL.txt。大概是这样,bin/目录下的.zip文件里面有一个spring脚本(Windows系统是spring.bat),或者您也可以使用命令java -jar来运行.jar文件(脚本是帮您确保classpath是否设置正确了)。

3.2.2 使用SDKMAN!安装

SDKMAN!(一个软件开发工具管理器)可以用用来管理多版本的二进制SDKs,包括 Groovy 与 Spring Boot CLI。到sdkman.io下载SDKMAN!,用下面的方式来安装Spring Boot:

$ sdk install springboot
$ spring --version
Spring Boot v1.4.1.BUILD-SNAPSHOT

如果您正在开发一些命令行工具CLI的组件,并且想要方便的使用到您刚刚构建的版本,下面这个介绍可以帮到您。

$ sdk install springboot dev /path/to/spring-boot/spring-boot-cli/target/spring-boot-cli-1.4.1.BUILD-SNAPSHOT-bin/spring-1.4.1.BUILD-SNAPSHOT/
$ sdk default springboot dev
$ spring --version
Spring CLI v1.4.1.BUILD-SNAPSHOT

这样做可以安装一个被叫做dev实例的本地spring实例,它指向了您的目标生成路径,所以每次您重新构建Spring Boot,spring都会是保持最新版本。

应该可以看到下面的这些输出信息:

$ sdk ls springboot

================================================================================
Available Springboot Versions
================================================================================
> + dev
* 1.4.1.BUILD-SNAPSHOT ================================================================================
+ - local version
* - installed
> - currently in use
================================================================================

3.2.3 OSX Homebrew 安装

如果您在Mac环境下,并且使用Homebrew,运行下面的命令来安装Spring Boot CLI:

$ brew tap pivotal/tap
$ brew install springboot

Homebrew把`spring`安装到了/usr/local/bin

Note
如果没有顺利安装的话,大概是您的brew库已经太旧了,执行brew update以后,再试一试。

3.2.4 MacPorts安装

如果您在Mac环境下,并且使用MacPorts,运行下面的命令来安装Spring Boot CLI:

$ sudo port install spring-boot-cli

《Spring Boot官方指南》(二)入门的更多相关文章

  1. spring boot(一):入门篇

    构建微服务:Spring boot 入门篇 什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框 ...

  2. Spring Boot (二):模版引擎 Thymeleaf 渲染 Web 页面

    Spring Boot (二):模版引擎 Thymeleaf 渲染 Web 页面 在<Spring Boot(一):快速开始>中介绍了如何使用 Spring Boot 构建一个工程,并且提 ...

  3. spring boot / cloud (二) 规范响应格式以及统一异常处理

    spring boot / cloud (二) 规范响应格式以及统一异常处理 前言 为什么规范响应格式? 我认为,采用预先约定好的数据格式,将返回数据(无论是正常的还是异常的)规范起来,有助于提高团队 ...

  4. spring boot / cloud (二十) 相同服务,发布不同版本,支撑并行的业务需求

    spring boot / cloud (二十) 相同服务,发布不同版本,支撑并行的业务需求 有半年多没有更新了,按照常规剧本,应该会说项目很忙,工作很忙,没空更新,吧啦吧啦,相关的话吧, 但是细想想 ...

  5. Spring Boot(一):入门篇+前端访问后端

    转自:Spring Boot(一):入门篇 什么是Spring Boot Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发 ...

  6. Spring Boot 2 (二):Spring Boot 2 动态 Banner

    Spring Boot 2 (二):Spring Boot 2 动态 Banner Spring Boot 2.0 提供了很多新特性,其中就有一个小彩蛋:动态 Banner. 一.配置依赖 使用 Sp ...

  7. Spring Boot(十二):spring boot如何测试打包部署

    Spring Boot(十二):spring boot如何测试打包部署 一.开发阶段 1,单元测试 在开发阶段的时候最重要的是单元测试了,springboot对单元测试的支持已经很完善了. (1)在p ...

  8. Spring Boot:快速入门教程

    什么是Spring Boot? Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人 ...

  9. Spring Boot【快速入门】简单案例

    Spring Boot[快速入门]   Spring Boot 概述 Build Anything with Spring Boot:Spring Boot is the starting point ...

  10. Spring Boot 2.x 入门前的准备-IntelliJ IDEA 开发工具的安装与使用

    常用的用于开发 spring boot 项目的开发工具有 eclipse 和 IntelliJ IDEA 两种,最近有声音提出 visual code 也开始流行开发 java,而且确实如此, vs ...

随机推荐

  1. nginx1.6.3

    Nginx1.6.3安装配置 安装时关闭防火墙和selinuxservice iptables stopsed -i "s/selinux=enabled/selinux=disable/g ...

  2. [luoguP1437] [HNOI2004]敲砖块(DP)

    传送门 可以得到一个性质,如果打掉第i列的第j个,那么第i列的1~j-1个也会打掉. 如果第i列打j个,那么第i+1列至少打j-1个. #include <cstdio> #include ...

  3. 【构造+DFS】2017多校训练三 HDU 6060 RXD and dividing

    acm.hdu.edu.cn/showproblem.php?pid=6060 [题意] 给定一棵以1为根的树,把这颗树除1以外的结点划分为k个集合(可以有空集),把1加入划分后的集合 每个集合的结点 ...

  4. 【BZOJ2006】超级钢琴(RMQ,priority_queue)

    题意: 思路: 用三元组(i, l, r)表示右端点为i,左端点在[l, r]之间和最大的区间([l, r]保证是对于i可行右端点区间的一个子区间),我们用堆维护一些这样的三元组. 堆中初始的元素为每 ...

  5. 并发编程——IO模型

    前言 同步(synchronous):一个进程在执行某个任务时,另外一个进程必须等待其执行完毕,才能继续执行 #所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不会返回.按照这个定义, ...

  6. 寒武纪camp Day5

    补题进度:6/10 A(状压dp) 题意: 有n个数字1,2,...,n,有m个限制(a,b),表示至少要有一个数字a排在数字b的前面 你需要构造出一个含有数字1~n的序列,数字可以重复多次,要求该序 ...

  7. MongoDB学习day09--Mongoose aggregate 多表关联查询

    Mongodb的aggregate应用之前已经说过了. 可以参考day06 Mongoose的aggregate函数应用 var mongoose=require('./db.js'); var Or ...

  8. Callable线程

    写一个Callable线程 import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; im ...

  9. 【APUE】信号量、互斥体和自旋锁

    http://www.cnblogs.com/biyeymyhjob/archive/2012/07/21/2602015.html http://blog.chinaunix.net/uid-205 ...

  10. Android从无知到有知——NO.6

    紧随上一篇,说一下创建ip拨号器过程中出现的一些问题. 1)在一開始监听外拨电话的时候会报这样一个警告: Permission Denial: receiving Intent { act=andro ...