是否可以在同一个 Spring Boot 应用程序中为 MappingJackson2HttpMessageConverter 配置两个 bean?
我在一家公司工作,默认配置是从 dto 属性中删除 null 值,但我的应用程序需要某些 api 中的 dto 中的 null 值,而其他 api 我需要默认配置。
default configuration like this:
@Configuration
public class objectMapperConfig {
@Bean
@Primary
public ObjectMapper defaultObjectMapperConfig() {
objectMapper.setSerializationInclusion(Include.NON_NULL);
objectMapper.setDefaultPropertyInclusion(JsonInclude.Value.construct(Include.NON_EMPTY,
Include.NON_EMPTY));
return objectMapper;
}
}
the second object mapper like this:
@Configuration
public class ReportObjectMapperConfig {
@Bean("customObjectMapper")
public ObjectMapper customObjectMapper() {
objectMapper.setSerializationInclusion(Include.USE_DEFAULTS);
objectMapper.setDefaultPropertyInclusion(JsonInclude.Value.construct(Include.USE_DEFAULTS,
Include.USE_DEFAULTS));
return objectMapper;
}
}
I am trying to write my configuration like this
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
@Configuration
public class WebMvcConfig {
private ObjectMapper defaultObjectMapper;
private ObjectMapper customObjectMapper;
public WebMvcConfig(ObjectMapper defaultObjectMapper,
@Qualifier("customObjectMapper") ObjectMapper customObjectMapper) {
this.defaultObjectMapper = defaultObjectMapper;
this.customObjectMapper = customObjectMapper;
}
@Bean("defaultHttpMessageConverter")
public MappingJackson2HttpMessageConverter defaultMappingJackson2HttpMessageConverter() {
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
converter.setObjectMapper(defaultObjectMapper);
return converter;
}
@Bean("customHttpMessageConverter")
public MappingJackson2HttpMessageConverter customMappingJackson2HttpMessageConverter() {
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
converter.setObjectMapper(customObjectMapper);
return converter;
}
}
如果我做错了什么或错过了什么,有什么见解吗?