此規則標記使用
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;
}
如需相關資訊,請參閱下列資源: