spring boot搭建简单的web服务
早就听说过springboot快速构建服务的大名了,可惜一直不敢去花时间尝试,而且最近老是干运维的工作都快忘了本职java开发了。刚好这回公司要我做一个纯前端应用的后端服务(听起来咋这么绕口,说简单点就是vuejs做前端展示,java做后台服务)借着这个机会赶紧把spring boot用起来,作为使用过程在此一一记录以备需要时回看。
spring boot主要优点:
1. 快速搭建常用框架
2. 几乎没有任何xml配置文件
3. 自动下载各种依耐以及自带各种默认配置
基于maven搭建spring boot应用
访问:http://start.spring.io/ , 通过spring 初始化工具自动生成项目
输入 group 和artifact之后点击 generate project会下载一个zip包
解压zip包如下图
用编辑器打开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>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.2.RELEASE</version>
<relativePath/>
<!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
此处可以看到默认已经添加了两个依耐 spring-boot-starter 和spring-boot-starter-test
其中
spring-boot-starter是核心依耐,包括整个应用自动配置支持,日志和YAML
spring-boot-starter-test是对常用测试依赖的支持,包括JUnit, Hamcrest和Mockito,还有spring-test模块
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
我们的目标是创建一个简单的web应用,所以我们需要添加一堆spring mvc的依耐,但是–spring boot的优势就是简化操作,此处我们只需要添加spring-boot-starter-web即可构建一个web应用添加后的pom
<!-- 核心模块,包括自动配置支持、日志和YAML -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- 测试模块,包括JUnit、Hamcrest、Mockito -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- 引入Web模块 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
添加HelloWorld服务
既然web服务搭建起来了,我们理所当然的要编写万年不变的helloworld服务了(我也记不起来写过多少版本的helloworld了)spring-boot-start-web支持注解,所以我们不需要再去写spring mvc那复杂的mapping文件了
我们在src/main/java/com/example下创建HelloController.java文件,代码如下
package com.example;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello() {
return "Hello World";
}
}
好了,我们的web应用就配置完成了,通过命令行进入demo根目录,输入一下命令(需要有java环境和maven环境)
mvn clean install
-------------------------------
INFO]
[INFO] --- maven-jar-plugin:2.6:jar (default-jar) @ demo ---
[INFO] Building jar: /Users/liduote/Downloads/demo/target/demo-0.0.1-SNAPSHOT.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:1.5.2.RELEASE:repackage (default) @ demo ---
[INFO]
[INFO] --- maven-install-plugin:2.5.2:install (default-install) @ demo ---
[INFO] Installing /Users/liduote/Downloads/demo/target/demo-0.0.1-SNAPSHOT.jar to /Users/liduote/.m2/repository/com/example/demo/0.0.1-SNAPSHOT/demo-0.0.1-SNAPSHOT.jar
[INFO] Installing /Users/liduote/Downloads/demo/pom.xml to /Users/liduote/.m2/repository/com/example/demo/0.0.1-SNAPSHOT/demo-0.0.1-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 9.270s
[INFO] Finished at: Fri Mar 17 17:57:48 CST 2017
[INFO] Final Memory: 28M/283M
[INFO] ------------------------------------------------------------------------
如上则构建完成,进入demo/target目录可以看到目标应用demo-0.0.1-SNAPSHOT.jar
输入以下命令即可启动应用了
java -jar demo-0.0.1-SNAPSHOT.jar
在SpringBoot的Web项目中,默认采用的是内置Tomcat,当然也可以配置支持内置的jetty,内置有什么好处呢?
1. 方便微服务部署。
2. 方便项目启动,不需要下载Tomcat或者Jetty
所以在应用启动成功后直接在浏览器里访问http://localhost:8080/hello即可看到我们熟悉的HelloWorld了