스프링 부트 공식 레퍼런스를 한글로 번역한 문서입니다.
전체 목차는 여기에 있습니다.
목차
7.28. Web Services
스프링 부트는 웹 서비스 자동 설정을 제공하기 때문에 Endpoints
를 정의하기만 하면 된다.
Spring Web Services 기능들은 spring-boot-starter-web-services
모듈로 쉽게 접근할 수 있다.
WSDLs와 XSDs를 사용할 땐 각각 SimpleWsdl11Definition
과 SimpleXsdSchema
빈을 자동으로 생성할 수 있다. 아래 예시처럼 위치를 지정해주면 된다:
spring.webservices.wsdl-locations=classpath:/wsdl
spring:
webservices:
wsdl-locations: "classpath:/wsdl"
7.28.1. Calling Web Services with WebServiceTemplate
애플리케이션에서 원격에 있는 웹 서비스를 호출해야 할 땐 WebServiceTemplate
클래스를 사용할 수 있다. WebServiceTemplate
인스턴스는 사용 전에 커스텀해야 하는 경우가 많기 때문에 스프링 부트는 WebServiceTemplate
빈을 단일로 자동 설정해주지 않는다. 하지만 WebServiceTemplate
인스턴스를 만들 때 활용할 수 있는 WebServiceTemplateBuilder
를 자동으로 설정해준다.
다음은 WebServiceTemplateBuilder
를 활용하는 전형적인 예시다:
@Service
public class MyService {
private final WebServiceTemplate webServiceTemplate;
public MyService(WebServiceTemplateBuilder webServiceTemplateBuilder) {
this.webServiceTemplate = webServiceTemplateBuilder.build();
}
public SomeResponse someWsCall(SomeRequest detailsReq) {
return (SomeResponse) this.webServiceTemplate.marshalSendAndReceive(detailsReq,
new SoapActionCallback("https://ws.example.com/action"));
}
}
WebServiceTemplateBuilder
는 기본적으로 클래스패스에서 사용할 수 있는 HTTP 클라이언트 라이브러리를 찾아 적절한 HTTP 기반 WebServiceMessageSender
를 설정해준다. 다음과 같이 read/connection 타임아웃을 커스텀할 수도 있다:
@Configuration(proxyBeanMethods = false)
public class MyWebServiceTemplateConfiguration {
@Bean
public WebServiceTemplate webServiceTemplate(WebServiceTemplateBuilder builder) {
WebServiceMessageSender sender = new HttpWebServiceMessageSenderBuilder()
.setConnectTimeout(Duration.ofSeconds(5))
.setReadTimeout(Duration.ofSeconds(2))
.build();
return builder.messageSenders(sender).build();
}
}
Next :Creating Your Own Auto-configuration
직접 스프링 부트 자동 설정 개발하기
전체 목차는 여기에 있습니다.