It's easy to create a custom ObjectMapper Весна, но для конфигурации требуется XML. Я пытаюсь уменьшить количество XML-конфигурации для вещей, которые действительно не будут меняться без необходимости перераспределения всей моей системы.Возможно ли создать пользовательский объект-объект Jackson для Spring, не прибегая к XML?
Таким образом, заголовок говорит все это - могу ли я использовать аннотации или какой-либо другой метод, отличный от XML, чтобы рассказать Spring: «Эй, пожалуйста, используйте мой пользовательский объект mapper pls»?
EDIT:
Это не появляется на работе
@Configuration
@EnableWebMvc
public class AppConfig {
@Primary
@Bean
public ObjectMapper mapper(){
ObjectMapper mapper = new ObjectMapper();
mapper.setPropertyNamingStrategy(PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES);
mapper.setSerializationInclusion(JsonInclude.Include.ALWAYS);
mapper.registerModule(new JodaModule());
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
return mapper;
}
}
EDIT 2: Я не верю, что весна использует мой ObjectMapper. У меня есть этот код:
@Primary
@Bean
public ObjectMapper mapper(){
ObjectMapper mapper = new ObjectMapper();
JodaModule mod = new JodaModule();
mod.addSerializer(DateTime.class, new JsonSerializer<DateTime>() {
@Override
public void serialize(DateTime dateTime, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
System.out.println("Hi, bob");
}
});
mapper.registerModule(mod);
mapper.setPropertyNamingStrategy(PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES);
mapper.setSerializationInclusion(JsonInclude.Include.ALWAYS);
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
mapper.enable(SerializationFeature.INDENT_OUTPUT);
return mapper;
}
но когда я поставил точку останова на System.out.println("Hi, bob")
он никогда не называют - Хотя я определенно сериализации DateTime.
Просто создайте и зарегистрируйте его как фасоль? – chrylis
@chrylis, как бы я это сделал? –