Spring 4.1까지 사용 중인 Jackson Object Mapper를 입수하려면 어떻게 해야 합니까?
Spring 4.1은 Jackson을 인스턴스화합니다.ObjectMapper
사례.하고 싶은 이유가 있다@Autowire
이 인스턴스를 컨트롤러 중 하나에 넣습니다.컨트롤러는 Jackson을 사용하여 독자적인 마이너 JSON 해석을 수행합니다만,ObjectMapper
Spring 자체에서 사용하는 것과 동일한 인스턴스여야 합니다.어떻게 하면 그것을 달성할 수 있을까요?
커스텀 설정 방법은 묻지 않습니다.ObjectMapper
Spring에 의해 사용되고 있습니다.기본값으로 만족합니다.Spring out에서 사용하는 인스턴스를 피싱하여 기존 인스턴스를 자체 코드로 재사용할 수 있도록 합니다.
클래스 패스로 잭슨과 함께 Spring Boot을 사용하고 REST 컨트롤러의 JSON 해석에 대한 기본 구현을 사용하는 경우 다음과 같이 하십시오.
@Autowired
private ObjectMapper jacksonObjectMapper;
다른 사람들이 말했듯이, 당신은 할 수 없다.@Autowired
컨트롤러에 직접 연결할 수 있습니다.
@Emerson Farrugia가 제안하는 새로운 인스턴스 작성 방법
Jackson2ObjectMapperBuilder.json().build()
또, 취득한 인스턴스가, 다음의 인스톨을 따르지 않았기 때문에, 나에게도 효과가 없었습니다.spring.jackson.*
필요한 구성 속성입니다.
제가 찾은 해결책은 스프링스로부터 ObjectMapper를 얻는 것이었습니다.MappingJackson2HttpMessageConverter
주사할 수 있습니다.
그래서 전원을 껐습니다.
@Autowired
private MappingJackson2HttpMessageConverter springMvcJacksonConverter;
오브젝트 맵퍼를 다음과 같이 가져옵니다.
ObjectMapper objectMapper = springMvcJacksonConverter.getObjectMapper();
이 인스턴스는 Spring MVC 자체 메시지 변환과 동일하게 동작합니다.어차피 같은 인스턴스일 수 있습니다.
보시면MappingJackson2HttpMessageConverter
새로운 테크놀로지가 생성됩니다.ObjectMapper
콩으로 노출되지는 않습니다.겟터가 있긴 한데, 내가 과거에 알아낸 유일한 방법은 내가 그 겟터를 만들었을 때야.MappingJackson2HttpMessageConverter
나 자신, 예를 들면.
public class WebMvcConfiguration extends WebMvcConfigurerAdapter {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
MappingJackson2HttpMessageConverter jacksonMessageConverter = new MappingJackson2HttpMessageConverter();
ObjectMapper objectMapper = jacksonMessageConverter.getObjectMapper();
objectMapper.registerModule(new JodaModule());
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, true);
converters.add(jacksonMessageConverter);
}
}
Spring Boot를 사용하는 경우 매뉴얼에 다음 중 하나를 사용하는 데 특화된 섹션이 있습니다.ObjectMapper
기본값을 생성하는 경우Jackson2ObjectMapperBuilder
@Bean
, 같은 것을 자동 접속할 수 있습니다.ObjectMapper
instance를 설정합니다.
그ObjectMapper
작성자Jackson2ObjectMapperBuilder
다음 명령을 사용하여 빌더를 삽입할 수 있습니다.
@Autowired
private Jackson2ObjectMapperBuilder mapperBuilder;
그 후 사용mapperBuilder.build()
건물을 짓다ObjectMapper
instance 및 이 instance는 configuration을 사용할 수 있습니다.application.properties
공식 의사 선생님입니다
Spring Boot의 소스 코드를 디버깅한 결과 컨텍스트 전체를 실행할 때만Jackson2ObjectMapperBuilder
에 삽입한 설정이 포함됩니다.application.yml
.
즉, JUnit 5를 사용한Spring Boot 테스트에서 Object Mapper를 생성하려면 다음 작업을 수행해야 합니다.
@ExtendWith(SpringExtension.class)
@SpringBootTest
class SomeTest {
@Autowired
private Jackson2ObjectMapperBuilder builder;
...
@Test
void testObjectMapper() {
ObjectMapper mapper = builder.build();
}
만 만들 수 .@SpringBootTest(classes = Jackson2ObjectMapperBuilder.class)
을 사용하다
?bootRun
우린 이 문제가 없어
은, 「아니다」로 설정되어 .Jackson2ObjectMapperBuilderCustomizerConfiguration#customize(Jackson2ObjectMapperBuilder builder)
★★★★★★ 。
@Autowire the MappingJackson2 MappingJackson2" @Autowire " "Http Message Converter" "Http Message Converter" "Http Message Converter" " 음음음음 when when when when when when when when when when when when when when when when when when 。No qualifying bean of type 'org.springframework.http.converter.json.MappingJackson2HttpMessageConverter' available: expected single matching bean but found 4: mappingJackson2HttpMessageConverter,jacksonHttpMessageConverter,halJacksonHttpMessageConverter,alpsJsonHttpMessageConverter
.
중 .변수명을 위 중 하나로 변경하면 해당 인스턴스를 얻을 수 있습니다.@Autowired private MappingJackson2HttpMessageConverter halJacksonHttpMessageConverter;
Spring 4.3 업데이트:
- Spring 4.3부터는 컨스트럭터가 1개인 클래스에서 @Autowired 주석을 생략할 수 있습니다.
- 따라서 ObjectMapper 파라미터를 사용하는 컨스트럭터를 추가하면 @Autowired 주석을 사용할 필요 없이 잭슨 ObjectMapper 인스턴스와 함께 자동으로 연결됩니다.
괜찮으시다면, 2단계 음료수입니다.
you at your ★★★★★★★ ★★★
@SpringBootApplication
추가, 추가:@Bean public ObjectMapper mapper() { return new ObjectMapper(); }
하시는 곳 어디든지
ObjectMapper
:@Autowired ObjectMapper mapper;
피스!
언급URL : https://stackoverflow.com/questions/30060006/how-do-i-obtain-the-jackson-objectmapper-in-use-by-spring-4-1
'programing' 카테고리의 다른 글
이벤트 핸들러의 React 구성 요소에 대한 참조 가져오기 (0) | 2023.03.16 |
---|---|
심플하고 안전한 API 인증 시스템 (0) | 2023.03.16 |
spring-boot에서 swagger-ui를 완전히 비활성화하는 방법(/swagger-ui.html은 404를 반환해야 함 (0) | 2023.03.16 |
springboot embedded tomcat 및 tomcat- (0) | 2023.03.16 |
스프링 테스트에서 보안되지 않은 URL에 대해 401 반환 (0) | 2023.03.16 |