Jacksonのkotlin対応モジュール をSpring Bootで使ってみる。
バージョンなど
Spring Boot:1.3.5
Jackson:2.6.6
Jacksonのkotlinモジュールを依存に追加
Gradleだとこんな感じですね
compile 'com.fasterxml.jackson.module:jackson-module-kotlin:2.6.6'
JacksonのKotlinモジュールを有効にする
Developing Spring Boot applications with Kotlinを参考にして追加してあげる。
@Bean open fun objectMapperBuilder(): Jackson2ObjectMapperBuilder = Jackson2ObjectMapperBuilder().modulesToInstall(KotlinModule())
コントローラの実装
Jsonがマッピングされたdata classを文字列表現で返すだけのシンプルな実装です。
@RestController @RequestMapping("test") open class Controller { @RequestMapping(consumes = arrayOf(MediaType.APPLICATION_JSON_VALUE), method = arrayOf(RequestMethod.POST)) @ResponseBody fun post(@RequestBody param: Param): String { return param.toString() } }
動かしてみると
いい感じに動きました。
curl -H "Content-Type: application/json" -X POST -d '{"str": "12345", "num": 100}' http://localhost:8080/test Param(str=12345, num=100)
Spring Boot1.4系になると
Spring Boot1.4系になると、 jackson-module-kotlinを追加してあげるだけでいい感じに動いてくれます。
上の例で書いたような、KotlinModuleの設定がいらなくなる感じです。
この辺の実装が追加されてるからですかね。
spring-framework/Jackson2ObjectMapperBuilder.java at master · spring-projects/spring-framework · GitHub
おわり。