[SPRING] 봄 부팅 1.4 잭슨을 사용자 지정하는 방법
SPRING봄 부팅 1.4 잭슨을 사용자 지정하는 방법
나는 잭슨의 기능을 사용자 정의 봄 부팅 1.4 Jackson2ObjectMapperBuilderCustomizer.java을 사용하는 방법의 예를 찾을 수있었습니다.
부팅 1.4 잭슨을 사용자 정의에 대한 DOCO - http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#howto-customize-the-jackson-
내가 확실하지 오전하지만이 Jackson2ObjectMapperBuilderCustomizer.java를 사용하여 객체 매퍼를 사용자 정의 할 수있는 올바른 방법 인 경우 내 구성, 작동
@Configuration
public class JacksonAutoConfiguration {
@Autowired
private Environment env;
@Bean
public Jackson2ObjectMapperBuilder jacksonObjectMapperBuilder(
List<Jackson2ObjectMapperBuilderCustomizer> customizers) {
Jackson2ObjectMapperBuilder builder = configureObjectMapper();
customize(builder, customizers);
return builder;
}
private void customize(Jackson2ObjectMapperBuilder builder,
List<Jackson2ObjectMapperBuilderCustomizer> customizers) {
for (Jackson2ObjectMapperBuilderCustomizer customizer : customizers) {
customizer.customize(builder);
}
}
private Jackson2ObjectMapperBuilder configureObjectMapper() {
Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
List<String> activeProfiles = asList(env.getActiveProfiles());
if (activeProfiles.contains(SPRING_PROFILE_DEVELOPMENT)) {
builder.featuresToEnable(SerializationFeature.INDENT_OUTPUT);
}
return builder;
}
}
일부 내용을 제공하기 위해,이 클래스는 자동 ControllerAdvice 및 위 같은 몇 가지 사소한 기능처럼 여러 가지를 구성 REST 서비스에 대한 내 자신의 봄 스타터 프로젝트에 앉아있다.
그래서 내 목표는 잭슨의 구성을 확장하기보다는 부팅 또는 다른 패키지가 제공하는 구성을 무시하는 것입니다.
해결법
-
==============================
1.이미 봄 부팅에 의해 사전 구성 년대 잭슨 ObjectMapper을 사용자 정의하려면, 내가이 일을 할 수 있었다 (여기 예제는 사용자 정의 디시리얼라이저를 추가하는 것입니다).
이미 봄 부팅에 의해 사전 구성 년대 잭슨 ObjectMapper을 사용자 정의하려면, 내가이 일을 할 수 있었다 (여기 예제는 사용자 정의 디시리얼라이저를 추가하는 것입니다).
구성 클래스 :
@SpringBootConfiguration public class Application { @Autowired private BigDecimalDeserializer bigDecimalDeserializer; ... @Bean public Jackson2ObjectMapperBuilderCustomizer addCustomBigDecimalDeserialization() { return new Jackson2ObjectMapperBuilderCustomizer() { @Override public void customize(Jackson2ObjectMapperBuilder jacksonObjectMapperBuilder) { jacksonObjectMapperBuilder.deserializerByType(BigDecimal.class, bigDecimalDeserializer); } }; } ... }
그리고 내 사용자 지정 디시리얼라이저는이 봄에 의해 포착 어떻게 보여 :
@Component public class BigDecimalDeserializer extends StdDeserializer<BigDecimal> { public BigDecimalDeserializer() { super(BigDecimal.class); } @Override public BigDecimal deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { ... } ... }
-
==============================
2.그것은 당신이 뭘 하려는지에 따라 달라집니다.
그것은 당신이 뭘 하려는지에 따라 달라집니다.
당신이 기본적으로 수행 된 것 외에 몇 가지 사용자 정의한 내용을 확인하려면 다음 당신은 당신의 자신의 Jackson2ObjectMapperBuilderCustomizer 구현을 작성하고 콩으로 노출한다. 당신이 현재 가지고하는 것은이의 더 복잡한 버전입니다. 오히려 그들에게 자신을 호출 한 다음 customisers 주입 갖는 것보다, 당신은 당신의 자신의 customiser 빈을 만들고 부팅 당신을 위해 그것을 호출합니다.
당신이 완전히 제어 및 부팅의 사용자 정의한 모든 전원을 끄려면 다음 Jackson2ObjectMapperBuilder 또는 ObjectMapper 콩을 작성하고 필요에 따라 구성합니다. 이 빌더는 다음 또한 봄 데이터 REST와 같은 다른 구성 요소에 의해 생성 ObjectMappers를 구성하는 데 사용되는 빌더 접근이 바람직하다.
코드를 보면 다시 단계를 복용, 당신은 단순히 잭슨의 출력의 들여 쓰기를 가능하게하는 프로파일 별 구성 파일 (application-dev.properties 같은)를 사용하여 훨씬 더 많은 일을 구성 할 수 있습니다. 당신은 여기에 대한 자세한 내용을보실 수 있습니다.
-
==============================
3.단지 ObjectMapper 빈을 만듭니다
단지 ObjectMapper 빈을 만듭니다
@Bean ObjectMapper objectMapper() { return Jackson2ObjectMapperBuilder .json() .featuresToEnable(MapperFeature.DEFAULT_VIEW_INCLUSION) .build(); }
from https://stackoverflow.com/questions/39263553/how-to-customise-jackson-in-spring-boot-1-4 by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 봄 부팅에 TransientPropertyValueException (0) | 2019.10.17 |
---|---|
[SPRING] + @Transactional 주위에 사용자 정의 스프링 AOP (0) | 2019.10.17 |
[SPRING] 비 스프링 구성 요소에 대한 스프링 AOP (0) | 2019.10.17 |
[SPRING] 모의 사용하여 외부 라이브러리 스프링 프레임 워크와 가라테 항아리를 실행 (0) | 2019.10.17 |
[SPRING] 스프링 부팅 스타터 데이터 SOLR에 schemaCreationSupport 사용 (0) | 2019.10.17 |