I want to create two Hibernate aware object mapper bean in my Spring boot project.
One bean to force lazy loading and another to force lazy loading set as false. My bean definition as below :
I created a HibernateAwareObjectMapper
class
public class HibernateAwareObjectMapper extends ObjectMapper {
}
and
@Configuration
public class CrewuiserCorebeans extends WebMvcConfigurerAdapter {
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
@Bean
public ObjectMapper defaultObjectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
Hibernate5Module hibernate5Module = new Hibernate5Module();
hibernate5Module.configure(Hibernate5Module.Feature.FORCE_LAZY_LOADING, true);
objectMapper.registerModule(hibernate5Module);
return objectMapper;
}
@Bean
public HibernateAwareObjectMapper hibernateAwareObjectMapper() {
HibernateAwareObjectMapper objectMapper = new HibernateAwareObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
Hibernate5Module hibernate5Module = new Hibernate5Module();
hibernate5Module.configure(Hibernate5Module.Feature.FORCE_LAZY_LOADING, false);
objectMapper.registerModule(hibernate5Module);
return objectMapper;
}
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
argumentResolvers.add(new UserContextResolver());
}
}
When I run the application, I am getting below error:
Parameter 0 of method mappingJackson2HttpMessageConverter in org.springframework.boot.autoconfigure.web.JacksonHttpMessageConvertersConfiguration$MappingJackson2HttpMessageConverterConfiguration required a single bean, but 2 were found:
- defaultObjectMapper: defined by method 'defaultObjectMapper' in class path resource [com/crewuiser/core/configuration/CrewuiserCorebeans.class]
- hibernateAwareObjectMapper: defined by method 'hibernateAwareObjectMapper' in class path resource [com/crewuiser/core/configuration/CrewuiserCorebeans.class]
org.springframework.boot.autoconfigure.web.JacksonHttpMessageConvertersConfiguration
is in jar, so I can't add @Qualifier
annotation.
Please help, if I am missing anything here.How I can make it work?