SpringBoot: Eclipse中开发Restful Web App
0. 系统版本
- 操作系统:window10
- spring boot :2.1.4 release
- eclipse Version : 2019-03 (4.11.0)
1. 在eclipse里安装Spring tools
点击Help-Eclipse Marketplace
在Popular里找到Spring tools 4 - Spring boot,安装
2. 新建Springboot项目
点击New-other,选择Springboot - spring starter project创建
输入项目名字信息,组件选择Web
3. 修改POM.xml
- 首先需要继承母POM: spring-boot-starter-parent
- 选用依赖:
- spring-boot-starter-web(新建项目时选了web就会自动加上,自己手动加也一样)
- spring-boot-starter-test (测试用)
- json-path (JSON解析)
- 构建组件:spring-boot-maven-plugin (打包用)
<?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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<groupId>com.hiramchen</groupId>
<artifactId>SpringBoot-rest-service</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>SpringBoot-rest-service</name>
<description>SpringBoot-rest-service</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
4. 新增模型类Greeting.java
在src/main/java下随便建个package,创建文件Greeting.java,这是MVC中的M
package com.hiramchen.hello;
public class Greeting {
private final long id;
private final String content;
public Greeting(long id, String content) {
this.id = id;
this.content=content;
}
public long getId() {
return this.id;
}
public String getContent() {
return this.content;
}
}
5. 新增控制类GreetingController.java
在src/main/java下随便建个package,创建文件GreetingController.java,这是MVC中的C
package com.hiramchen.hello;
import java.util.concurrent.atomic.AtomicLong;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/api/greeting")
public class GreetingController {
private static final String template = "Hello, %s!";
private final AtomicLong counter =new AtomicLong();
@RequestMapping(value="/{name}",method=RequestMethod.GET)
public Greeting greeting(@PathVariable String name) {
return new Greeting(counter.incrementAndGet(),String.format(template, name));
}
}
6. 运行
在application类右键,点击run as -> Spring boot app 运行,成功后可以进入http://localhost:8080查看,若成功应该弹出一个Error Page,因为没有配置首页,这是正常的。
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Tue Apr 23 16:30:54 CST 2019
There was an unexpected error (type=Not Found, status=404).
No message available
进入http://localhost:8080/api/greeting/yourname
可以返回一个JSON对象,说明路由配置成功!
{"id":1,"content":"Hello, yourname!"}
7. 问题
Q:多次run as会出现8080端口被占用的问题
A:
查看端口情况
netstat -ano
根据上面的PID查找占用端口的进程
tasklist |findstr "9808"
杀死进程
taskkill /f /t /im javaw.exe
永久解决方案:加入spring-boot-devtools依赖,每次run as会帮你restart,不用重新创建,而且更新文件时会实时刷新,很方便。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>