Message.java
import java.io.Serializable;
public class Message implements Serializable {
private String text;
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}
MessagesController.java
package com.example.demo;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("messages")
public class MessagesController {
final List<Message> messages = new CopyOnWriteArrayList<>();
@RequestMapping(method = RequestMethod.GET)
public List<Message> getMessages(){
return messages;
}
@RequestMapping(method = RequestMethod.POST)
public Message postMessages(@RequestBody Message message) {
messages.add(message);
return message;
}
}
### 画面遷移型アプリケーション
テンプレートエンジンとの連携ライブラリ(Starterプロジェクト、AutoConfigure)が用意
– Tymeleaf, FreeMarker, Groovy templates, Velocity, Mustacheなど
Tymeleafを使用する
pom.xml
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
HelloController.java
package com.example.demo;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class HelloController {
@RequestMapping("/hello")
public String hello(Model model) {
model.addAttribute("hello", "Hello World!");
return "hello";
}
}
/src/main/resources/templates/hello.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8" />
<title></title>
</head>
<body>
<p>
<span th:text="${hello}">Hello!</span>
</p>
</body>

src/main/resources
