Spring Boot勉強用リポジトリ作成

当初の予定通り、自習した結果を格納するリポジトリを作成した。

https://github.com/orimajp/springboot-study

正直言って後から参照しにくいのだが、細かいプロジェクトがたくさんできると管理しづらくなるので、管理用プロジェクト配下に各課題用プロジェクトを作る形とする。

Jackson ObjectMapperのLocalDateTime対応調査

Spring BootではLocalDateTime対応がデフォルトでは進んでいないため、各機能毎に設定を追加していく必要がある。ということで最初はObjectMapperのLocalDateTime対応から。

調べてみればやり方は色々と出てくるのだが、各ソフトウェアのバージョン違いによるものか上手くいかないものが多かった。

いくつかのパターンを調べたが、期待通りの結果を得られたのは以下のようにJackson2ObjectMapperBuilderを継承してObjectMapperの設定を行う方法。

@Configuration
public class JacksonConfig {

	@Bean
	public Jackson2ObjectMapperBuilder objectMapperBuilder() {
		final Jackson2ObjectMapperBuilder objectMapperBuilder = new Jackson2ObjectMapperBuilder() {

			@Override
			public void configure(ObjectMapper objectMapper) {
				super.configure(objectMapper);
				objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
			}
		};

		return objectMapperBuilder;
	}

}

もう一つ、application.propertiesで以下のように設定する方法もある。

spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS=false

その他、ObjectMapperのシリアライザ、デシリアライザを変更する方法も試したが上手くいかず。デバッガで初期化処理を追ってみたが、Spring Boot内部なのか何度も設定処理が走っていてよく分からなかった。

ちなみにエスケープ設定変更なども同じやり方で行けるかも知れない。

試したソースはこちら。

https://github.com/orimajp/springboot-study/tree/master/research-localdatetime/jackson

参考