Spring 5 특징
Spring Framework 5 특징에 대해서 살펴보자
Last updated
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-indexer</artifactId>
<version>5.0.3.RELEASE</version>
<optional>true</optional>
</dependency>
</dependencies>@Bean
fun apiRouter() = router {
(accept(APPLICATION_JSON) and "/api").nest {
"/book".nest {
GET("/", bookHandler::findAll)
GET("/{id}", bookHandler::findOne)
}
"/video".nest {
GET("/", videoHandler::findAll)
GET("/{genre}", videoHandler::findByGenre)
}
}
}// Option1. @Controller 기반
@RestController
public class BookController {
@GetMapping("/book")
Flux list() {
return this.repository.findAll();
}
@GetMapping("/book/{id}")
Mono findById(@PathVariable String id) {
return this.repository.findOne(id);
}
}
// Option2. Router/Handler 기반
RouterFunction personRoute =
route(
GET("/books/{id}").and(accept(APPLICATION_JSON)), handler::getBook)
.andRoute(GET("/books").and(accept(APPLICATION_JSON)), handler::listBooks);// WebClient 사용한 테스트 케이스
Mono book = WebClient.create("<http://localhost:8080>")
.get()
.url("/books/{id}", 1234)
.accept(APPLICATION_JSON)
.exchange(request)
.then(response -> response.bodyToMono(Book.class));