Loading...
Spring Framework Reference Documentation 7.0.2의 Web의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
Spring Framework는 다음 3가지 flavor로 제공되는 Kotlin router DSL을 함께 제공합니다:
이 DSL은 다음 예제에서 보여주듯이 RouterFunction 인스턴스를 빌드하기 위해 깔끔하고 idiomatic한 Kotlin 코드를 작성할 수 있게 해줍니다:
1@Configuration 2class RouterRouterConfiguration { 3 4 @Bean 5 fun mainRouter(userHandler: UserHandler) = router { 6 accept(TEXT_HTML).nest { 7 GET("/") { ok().render("index") } 8 GET("/sse") { ok().render("sse") } 9 GET("/users", userHandler::findAllView) 10 } 11 "/api".nest { 12 accept(APPLICATION_JSON).nest { 13 GET("/users", userHandler::findAll) 14 } 15 accept(TEXT_EVENT_STREAM).nest { 16 GET("/users", userHandler::stream) 17 } 18 } 19 resources("/**", ClassPathResource("static/")) 20 } 21}
이 DSL은 프로그래밍 방식이며, 이는
if식,for루프, 또는 다른 어떤 Kotlin 구성 요소를 통해 빈의 커스텀 등록 로직을 허용한다는 의미입니다. 이는 동적 데이터(예를 들어, 데이터베이스로부터의 데이터)에 따라 라우트를 등록해야 할 때 유용할 수 있습니다.
구체적인 예시는 MiXiT project를 참고하세요.
Kotlin DSL은 보다 idiomatic한 Kotlin API를 제공하고 더 나은 발견 가능성(정적 메서드 사용 없음)을 허용하기 위해 MockMvc Kotlin 확장을 통해 제공됩니다.
1val mockMvc: MockMvc = ... 2mockMvc.get("/person/{name}", "Lee") { 3 secure = true 4 accept = APPLICATION_JSON 5 headers { 6 contentLanguage = Locale.FRANCE 7 } 8 principal = Principal { "foo" } 9}.andExpect { 10 status { isOk } 11 content { contentType(APPLICATION_JSON) } 12 jsonPath("$.name") { value("Lee") } 13 content { json("""{"someBoolean": false}""", false) } 14}.andDo { 15 print() 16}
Kotlin multiplatform serialization은 Spring MVC, Spring WebFlux 그리고 Spring Messaging (RSocket)에서 지원됩니다. builtin support는 현재 CBOR, JSON, 그리고 ProtoBuf 포맷을 대상으로 합니다.
이를 활성화하려면, 관련 의존성과 플러그인을 추가하기 위해 those instructions를 따르세요. Spring MVC와 WebFlux에서, Kotlin serialization은 classpath에 존재하고 Jackson과 같은 다른 변형이 존재하지 않는 경우 기본적으로 구성됩니다. 필요하다면, 컨버터 또는 코덱을 수동으로 구성하세요.
Bean Registration DSL
Coroutines