Ez a szabály jelzi a
javax.xml.transform.Source
interfész, amikor a
SourceHttpMessageConverter osztály nem nem található.
A Spring keretrendszerben 6.0, a
SourceHttpMessageConverter osztály nincs már alapértelmezés szerint nem regisztrálható a Spring MVC vagy
RestTemplate.
Ennek következtében a Spring webes alkalmazások, amelyek a
javax.xml.transform.Source most szükség van konfigurálni
SourceHttpMessageConverter
kifejezetten. Fontos megjegyezni, hogy az átalakító regisztrálásának sorrendje fontos.
Például:
SourceHttpMessageConverter kellene a "gyűjtő" konverterek előtt kell regisztrálni, mint például a
MappingJackson2HttpMessageConverter.
A következő kódrészlet a
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();
}
}
A Spring keretrendszerben 6.0, a vezérlő kódja változatlan marad, de további konfigurációs lépésekkel szükséges a helyes működés biztosításához.
Regisztrálhat
SourceHttpMessageConverter manuálisan a oldalon Configuration kód.
A következő példa erre a felhasználási esetre:
@Configuration
public class WebConfig implements WebMvcConfigurer{
@Override
public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(new SourceHttpMessageConverter<>());
}
}
Alternatívaként beállíthatja a
SourceHttpMessageConverter egy
RestTemplate ha arra használja, hogy külső szolgáltatásokból XML-t kérjen le.
Íme egy példa erre a felhasználási esetre:
@Bean
public RestTemplate restTemplate() {
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new SourceHttpMessageConverter<>());
return restTemplate;
}
Az alábbi információforrások nyújtanak további tájékoztatást: