自动装配 CsvMapper
Autowiring a CsvMapper
我在 Spring 引导应用程序上使用 Jackson 来执行 JSON serialization/deserialization.
我可以自动装配常规的 ObjectMapper,Spring 将自动注册 Jdk8Module 和 JavaTimeModule。
现在我需要解析和编写一些 .csv 文件。目前,当我构建一个CsvMapper时,我需要手动注入上述模块:
var mapper = new CsvMapper()
.registerModule(new Jdk8Module())
.registerModule(new JavaTimeModule());
我想知道这是否真的有必要。对于常规的 ObjectMapper,Spring 以某种方式检测类路径中的那些模块并注册它们。我在这里错过了什么?
Spring 使用 Jackson2ObjectMapperFactoryBean
创建一个 ObjectMapper
bean。如果类路径中存在多个模块,则会自动注册它们:
- jackson-datatype-jdk7:支持 Java 7 种类型,例如 Path
- jackson-datatype-jdk8:支持其他 Java 8 种类型,例如 Optional
- jackson-datatype-jsr310:支持 Java 8 种日期和时间 API 类型
- jackson-datatype-joda:支持 Joda-Time 类型
- jackson-module-kotlin:支持 Kotlin 类 和数据 类
据我所知,Spring 不提供 CsvMapper 工厂 bean。因此,需要像您描述的那样手动创建一个 CsvMapper
bean。
我在 Spring 引导应用程序上使用 Jackson 来执行 JSON serialization/deserialization.
我可以自动装配常规的 ObjectMapper,Spring 将自动注册 Jdk8Module 和 JavaTimeModule。
现在我需要解析和编写一些 .csv 文件。目前,当我构建一个CsvMapper时,我需要手动注入上述模块:
var mapper = new CsvMapper()
.registerModule(new Jdk8Module())
.registerModule(new JavaTimeModule());
我想知道这是否真的有必要。对于常规的 ObjectMapper,Spring 以某种方式检测类路径中的那些模块并注册它们。我在这里错过了什么?
Spring 使用 Jackson2ObjectMapperFactoryBean
创建一个 ObjectMapper
bean。如果类路径中存在多个模块,则会自动注册它们:
- jackson-datatype-jdk7:支持 Java 7 种类型,例如 Path
- jackson-datatype-jdk8:支持其他 Java 8 种类型,例如 Optional
- jackson-datatype-jsr310:支持 Java 8 种日期和时间 API 类型
- jackson-datatype-joda:支持 Joda-Time 类型
- jackson-module-kotlin:支持 Kotlin 类 和数据 类
据我所知,Spring 不提供 CsvMapper 工厂 bean。因此,需要像您描述的那样手动创建一个 CsvMapper
bean。