이 규칙은
javax.xml.transform.Source
인터페이스가
SourceHttpMessageConverter 클래스는 not 찾을 수 없습니다.
Spring 프레임워크 6.0 에서
SourceHttpMessageConverter 클래스는 no 더 이상 기본적으로 등록되지 않습니다 Spring MVC 또는
RestTemplate.
결과적으로 Spring 웹 애플리케이션을 사용하는
javax.xml.transform.Source 이제 필요 를 구성하려면
SourceHttpMessageConverter
명시적으로. 변환기 등록 순서가 중요하다는 점에 유의하세요.
예를 들면 다음과 같습니다.
SourceHttpMessageConverter 는 와 같은 "캐치올" 변환기보다 먼저 등록해야 합니다
MappingJackson2HttpMessageConverter.
다음 코드 스니펫은
javax.xml.transform.Source:
@RestController
public class TransformController {
@GetMapping(value = "/transform", produces = MediaType.TEXT_HTML_VALUE)
public String transformXml() throws Exception{
Source xmlSource = new StreamSource(new ClassPathResource("sample.xml").getInputStream());
Source xsltSource = new StreamSource(new ClassPathResource("transform.xslt").getInputStream());
StringWriter writer = new StringWriter();
Result result = new StreamResult(writer);
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(xsltSource);
transformer.transform(xmlSource, result);
return writer.toString();
}
}
Spring 프레임워크 6.0 에서 컨트롤러 코드는 변경되지 않지만 추가 구성 단계가 필요합니다 이 올바르게 작동하는지 확인하기 위해 추가 구성 단계가 필요합니다.
등록할 수 있습니다
SourceHttpMessageConverter 수동으로 in Configuration 코드.
다음은 이 사용 사례의 예입니다:
@Configuration
public class WebConfig implements WebMvcConfigurer{
@Override
public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(new SourceHttpMessageConverter<>());
}
}
또는
SourceHttpMessageConverter 내에서
RestTemplate 를 사용하는 경우 외부 서비스에서 XML을 검색하는 경우.
다음은 이 사용 사례의 예입니다:
@Bean
public RestTemplate restTemplate() {
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new SourceHttpMessageConverter<>());
return restTemplate;
}
자세한 정보는 다음 자원을 참조하십시오.