秦悦明的运维笔记

spring-restfull

1. maven依赖

能用ide的用ide,或者用spring的命令行生成项目文件。

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>

2. 定义对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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 id;
}
public String getContent() {
return content;
}
}

3. 定义controller

GreetingController.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.util.concurrent.atomic.AtomicLong;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class GreetingController {
private static final String template = "Hello, %s!";
private final AtomicLong counter = new AtomicLong();
@RequestMapping("/greeting")
public Greeting greeting(@RequestParam(value="name", defaultValue="World") String name) {
return new Greeting(counter.incrementAndGet(),
String.format(template, name));
}
}

@RequestMapping 映射url地址,RequestMapping里面可以定义http方法@RequestMapping(method=GET).

RequestParam解析请求参数。

这里用了个String.format,套一个模板,还有就是id用了AtomicLong 原子对象。返回一个Greeting对象,spring boot自动配置生成json格式,里面的原理是data-rest依赖里面有com.jayway.jsonpath:json-path的依赖,spring的 MappingJackson2HttpMessageConverter自动将Greeting对象转成JSON了。

再详细了解一下@SpringBootApplication注解,其实他有3个注解组成

  1. Configuration 表明是个java配置类。
  2. EnableAutoConfiguration 打开springboot自动配置。
  3. ComponentScan 组件扫描。

4. run

运行访问得到结果:

1
2
3
4
5
http://localhost:8080/greeting
{"id":1,"content":"Hello, World!"}
http://localhost:8080/greeting?name=User
{"id":2,"content":"Hello, User!"}