[SPRING] 스프링 저지 잭슨
SPRING스프링 저지 잭슨
스프링 부트 프로젝트에서 Jackson 구성과 관련된 질문이 있습니다.
스프링 부트 블로그에 설명 된대로
내 개체 직렬화를 사용자 지정하려고합니다.
내 config에 새 config bean을 추가 한 후
@Bean
public Jackson2ObjectMapperBuilder jacksonBuilder() {
Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
builder.propertyNamingStrategy(PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES);
return builder;
}
내 클래스 사용자의 인스턴스를 출력하려고하면 json 결과가 CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES에 없습니다.
Class User {
private String firstName = "Joe Blow";
public String getFirstName() {
return firstName;
}
}
json 출력은 다음과 같습니다.
{
"firstName": "Joe Blow"
}
하지
{
"first_name": "Joe Blow"
}
어쩌면 내 커스텀 objectMapper 구성을 활성화하기 위해 저지 설정에 무언가를 등록해야 할 것입니다.
@Configuration
public class JerseyConfig extends ResourceConfig {
public JerseyConfig() {
packages("my.package);
}
}
감사
해결법
-
==============================
1.JAX-RS / Jersey 애플리케이션 용 ObjectMapper를 구성하는 일반적인 방법은 ContextResolver를 사용하는 것입니다. 예를 들어
JAX-RS / Jersey 애플리케이션 용 ObjectMapper를 구성하는 일반적인 방법은 ContextResolver를 사용하는 것입니다. 예를 들어
@Provider public class ObjectMapperContextResolver implements ContextResolver<ObjectMapper> { private final ObjectMapper mapper; public ObjectMapperContextResolver() { mapper = new ObjectMapper(); mapper.setPropertyNamingStrategy( PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES ); } @Override public ObjectMapper getContext(Class<?> type) { return mapper; } }
패키지 스캔으로 선택해야합니다. 패키지 범위 내에 있지 않으면 명시 적으로 등록 할 수 있습니다.
public JerseyConfig() { register(new ObjectMapperContextResolver()); // Or if there's is an injection required // register it as a .class instead of instance }
ContextResolver는, 정렬 화 및 비 정렬 화중에 불려갑니다. 직렬화 또는 직렬화 복원 될 클래스 / 유형은 getContext 메소드에 전달됩니다. 따라서 서로 다른 유형 또는 더 많은 사용 사례에 대해 둘 이상의 매퍼를 사용할 수도 있습니다.
Spring Boot 1.4부터는 ObjectMapper Spring bean을 만들면 Spring Boot가 ContextResolver를 만들고 ObjectMapper를 사용한다.
// in your `@Configuration` file. @Bean public ObjectMapper mapper() {}
from https://stackoverflow.com/questions/31685653/spring-boot-jersey-jackson by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 이름이 'java4s'인 DispatcherServlet의 URI [/ LoginApp /]가있는 HTTP 요청에 대한 매핑이 없습니다 (0) | 2018.12.27 |
---|---|
[SPRING] sec : thymeleaf 뷰에서 isAuthenticated () 및 isAnonymous ()를 true로 반환하도록 권한 부여 (0) | 2018.12.27 |
[SPRING] 스프링 부트 1.4의 보안 테스트 (0) | 2018.12.27 |
[SPRING] JavaConfig로 Spring IoC를 사용하여 AspectJ aspect를 설정하고 싶습니까? (0) | 2018.12.27 |
[SPRING] 항목 / 엔티티 모음이있는 Spring 캐시 (0) | 2018.12.27 |