두 리소스가 있고 둘 다 JSON을 반환합니다. request1을 위해 나는 반환 된 JSOn을 준비하기 위해 jackson mixin을 사용하고 싶다. request2에 대해서는 어떤 mixins도 사용하고 싶지 않습니다.스프링 MVC/잭슨 : 완료 후 objectMapper 재설정
질문 : request1 후 mixins를 재설정하는 방법은 무엇입니까? 객체 매퍼는 스프링 빈/싱글 톤입니다.
코드 : 물론
@ResponseBody
public Something getSomething1(..) {
..
objectMapper.addMixIn(Something.class, MyMixin.class);
return obj;
}
@ResponseBody
public Something getSomething2(..) {
..
return obj;
}
내가 처음에 getSomething2에서()와 모든 다른 방법의 유지 mixin 설정을 해제 할 수 있지만 오히려 getSomething1의 completition 후하고 싶어. 따라서 objectMapper를 수정 한 메소드는 변경 사항을 취소해야합니다.
편집 : JBNizet에서 언급했듯이 스레드로부터 안전하지는 않습니다. 누구든지 한 가지 방법으로 잭슨 믹스를 사용하는 더 좋은 방법을 알고 있습니까?
나는 좋은 해결책이 없지만 원하는 해결책은 옳지 않습니다. ObjectMapper는 모든 컨트롤러에서 사용되는 싱글 톤이며 요청은 여러 컨트롤러 또는 여러 컨트롤러에서 동시에 처리됩니다. 같은 컨트롤러. –
@JBNizet 동의합니다. 하지만 한 가지 방법으로 만 믹스 인을 사용하는 더 좋은 방법을 알고 있습니까? – NoobieNoob
자신의 ObjectMapper 인스턴스를 만들고 구성하는 것 외에이 매퍼를 사용하여 명시 적으로 응답 본문을 직렬화하는 것 외에는 없습니다. 여기에 설명 된대로 JSON보기를 사용할 수도 있습니다 (https://spring.io/blog/2014/12/02/latest-jackson-integration-improvements-in-spring). 또는 단순히 무언가를 올바른 구조의 객체로 변환하는 것입니다. –