该规则标记了使用
javax.xml.transform.Source
当
SourceHttpMessageConverter 类不是 未找到 找不到。
在 Spring Framework 6.0 中,
SourceHttpMessageConverter 类是 不再 在 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 Framework 6.0 中,控制器代码保持不变,但需要额外的配置步骤来确保其正常运行。 以确保其正常运行。
您可以注册
SourceHttpMessageConverter 手动 在 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;
}
有关更多信息,请参阅以下资源: