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