From 54fc77b51fcdfe29436bb8617d381e4d59fd0c8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Nicoll?= Date: Wed, 24 Dec 2025 14:49:12 +0100 Subject: [PATCH] Prevent default WebServiceMessageFactory to be created This commit improves the builder to provide the message factory upfront rather than setting it after the WebServiceTemplate has been instantiated. By providing the factory upfront (if it is set), it prevents the default strategy to be created first to be then erased by the custom factory. Closes gh-48615 --- .../boot/webservices/client/WebServiceTemplateBuilder.java | 3 ++- .../webservices/client/WebServiceTemplateBuilderTests.java | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/module/spring-boot-webservices/src/main/java/org/springframework/boot/webservices/client/WebServiceTemplateBuilder.java b/module/spring-boot-webservices/src/main/java/org/springframework/boot/webservices/client/WebServiceTemplateBuilder.java index 916d52eafbe..8a5513e276b 100644 --- a/module/spring-boot-webservices/src/main/java/org/springframework/boot/webservices/client/WebServiceTemplateBuilder.java +++ b/module/spring-boot-webservices/src/main/java/org/springframework/boot/webservices/client/WebServiceTemplateBuilder.java @@ -454,7 +454,8 @@ public class WebServiceTemplateBuilder { * @see #configure(WebServiceTemplate) */ public WebServiceTemplate build() { - return configure(new WebServiceTemplate()); + return configure( + (this.messageFactory != null) ? new WebServiceTemplate(this.messageFactory) : new WebServiceTemplate()); } /** diff --git a/module/spring-boot-webservices/src/test/java/org/springframework/boot/webservices/client/WebServiceTemplateBuilderTests.java b/module/spring-boot-webservices/src/test/java/org/springframework/boot/webservices/client/WebServiceTemplateBuilderTests.java index 049bff9d3d3..8d39b0c6195 100644 --- a/module/spring-boot-webservices/src/test/java/org/springframework/boot/webservices/client/WebServiceTemplateBuilderTests.java +++ b/module/spring-boot-webservices/src/test/java/org/springframework/boot/webservices/client/WebServiceTemplateBuilderTests.java @@ -38,6 +38,7 @@ import org.springframework.ws.client.core.FaultMessageResolver; import org.springframework.ws.client.core.WebServiceTemplate; import org.springframework.ws.client.support.destination.DestinationProvider; import org.springframework.ws.client.support.interceptor.ClientInterceptor; +import org.springframework.ws.soap.saaj.SaajSoapMessageFactory; import org.springframework.ws.transport.WebServiceMessageSender; import org.springframework.ws.transport.http.ClientHttpRequestMessageSender; import org.springframework.ws.transport.http.HttpUrlConnectionMessageSender; @@ -318,6 +319,12 @@ class WebServiceTemplateBuilderTests { then(template).should().setTransformerFactoryClass(SAXTransformerFactory.class); } + @Test + void buildShouldDetectWebServiceMessageFactory() { + WebServiceTemplate webServiceTemplate = this.builder.build(); + assertThat(webServiceTemplate.getMessageFactory()).isInstanceOf(SaajSoapMessageFactory.class); + } + @Test void setWebServiceMessageFactory() { WebServiceMessageFactory messageFactory = mock(WebServiceMessageFactory.class);