Как изменить ObjectMapper в проекте JHipster?
У меня возникли проблемы с настройкой ObjectMapper по умолчанию в JHipster, чтобы разрешить JsonViews, а также установить false FORCE_LAZY_LOADING
собственность Hibernate4Module
модуль.
Я попробовал три вещи без успеха:
1) Создать @Bean
с использованием @Primary
аннотация для замены бина по умолчанию:
@Bean
@Primary
public ObjectMapper viewsObjectMapper(){
ObjectMapper mapper = new ObjectMapper();
Hibernate4Module hibernateModule = new Hibernate4Module();
hibernateModule.configure(Hibernate4Module.Feature.FORCE_LAZY_LOADING, false); mapper.registerModule(hibernateModule);
mapper.disable(MapperFeature.DEFAULT_VIEW_INCLUSION);
return mapper;
}
2) я модифицировал @Bean
Hibernate4Module
в DatabaseConfiguration
Класс следующим образом:
@Bean
public Hibernate4Module hibernate4Module() {
Hibernate4Module hibernateModule = new Hibernate4Module();
hibernateModule.configure(Hibernate4Module.Feature.FORCE_LAZY_LOADING, true);
return hibernateModule;
}
3) И это решение.
Любая помощь будет оценена.
1 ответ
Решение
Вы можете сделать это, как указано в документации Spring Boot. В Spring Boot нет необходимости объявлять ObjectMapper в @Configuration
класс, который расширяет WebMvcConfigurationSupport
, JHipster создает @Configuration
класс с именем WebConfigurer, где вы можете поместить этот код:
@Bean
public ObjectMapper viewsObjectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.disable(MapperFeature.DEFAULT_VIEW_INCLUSION);
Hibernate4Module hibernateModule = new Hibernate4Module();
hibernateModule.configure(Hibernate4Module.Feature.FORCE_LAZY_LOADING, false);
objectMapper.registerModule(hibernateModule);
return objectMapper;
}
@Bean
public MappingJackson2HttpMessageConverter jackson2Converter() {
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
converter.setObjectMapper(viewsObjectMapper());
return converter;
}