📜  讨论Spring Web Services(1)

📅  最后修改于: 2023-12-03 15:28:06.632000             🧑  作者: Mango

讨论Spring Web Services

Spring Web Services是一个基于Spring框架的组件,它提供了一种快速创建 Web 服务的方式。Spring Web Services不仅支持 SOAP 协议,还支持 RESTful 协议。对于 Web 服务的开发,Spring Web Services提供了很多便利,下面我们就来讨论一下。

1. Spring Web Services的优缺点
优点
  • 集成Spring框架。Spring Web Services集成了Spring框架,使得开发者可以很容易地集成其他Spring组件,如Spring MVC。
  • 多种协议支持。Spring Web Services不仅支持SOAP协议,还支持RESTful协议。
  • 模块化。Spring Web Services采用模块化的架构,这种架构易于管理和扩展。
  • 高度抽象的XML编程模型。Spring Web Services采用了Schema-first方式,基于XML Schema快速创建Web服务。
缺点
  • 文档相对较少。与其他成熟的开源Web服务框架相比,Spring Web Services的文档较少,对于初学者不够友好。
  • 缺少自带的安全框架。开发者必须自己配置安全框架。但Spring Security可以很好地解决这个问题。
2. Spring Web Services的使用
2.1 依赖环境
  • JDK 1.8及以上版本
  • Spring Framework 5.1及以上版本
2.2 快速开始

为了使用Spring Web Services,我们需要添加相关的依赖。在使用Maven构建的项目中,我们可以在pom.xml文件中添加以下依赖:

<dependency>
    <groupId>org.springframework.ws</groupId>
    <artifactId>spring-ws-core</artifactId>
    <version>3.0.7.RELEASE</version>
</dependency>

使用Spring Boot创建一个简单的Web服务示例,只需要几个步骤:

步骤1:编写xsd文件和web服务的Endpoint类

在resoures目录下创建wsdl目录,并在其中创建XXX.xsd和XXX.wsdl文件,定义web服务。

在Java package中编写web服务端点类(Endpoint),通过标注来表明定义的web服务。

步骤2:创建Maven工程

在Maven工程中添加spring-boot-starter-web-services包。

步骤3:配置Web服务

Spring Boot自动配置Web Services bean,不需要做太多额外的配置。

步骤4:启动Web服务

在Main方法中启动应用程序即可。

2.3 配置Spring Web Services

对于Web服务的配置,我们可以通过Java Config方式和XML配置文件方式来实现。

2.3.1 Java Config方式

@Configuration
@EnableWs
public class WebServiceConfig extends WsConfigurerAdapter {

    @Bean
    public ServletRegistrationBean<?> messageDispatcherServlet() {
        MessageDispatcherServlet servlet = new MessageDispatcherServlet();
        servlet.setApplicationContext(applicationContext);
        servlet.setTransformWsdlLocations(true);
        return new ServletRegistrationBean<>(servlet, "/ws/*");
    }

    @Bean(name = "XXX")
    public DefaultWsdl11Definition defaultWsdl11Definition(XsdSchema xxxSchema) {
        DefaultWsdl11Definition wsdl11Definition = new DefaultWsdl11Definition();
        wsdl11Definition.setPortTypeName("XXXPort");
        wsdl11Definition.setLocationUri("/ws");
        wsdl11Definition.setTargetNamespace("urn:XXX");
        wsdl11Definition.setSchema(xxxSchema);
        return wsdl11Definition;
    }

    @Bean
    public XsdSchema xxxSchema() {
        return new SimpleXsdSchema(new ClassPathResource("XXX.xsd"));
    }
}

2.3.2 XML配置文件方式

<sws:annotation-driven/>

<bean id="messageDispatcherServlet" class="org.springframework.ws.transport.http.MessageDispatcherServlet">
    <property name="transformWsdlLocations" value="true"/>
</bean>

<bean id="XXX" class="org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition">
    <property name="portTypeName" value="XXXPort"/>
    <property name="locationUri" value="/ws"/>
    <property name="targetNamespace" value="urn:XXX"/>
    <property name="schema" ref="xxxSchema"/>
</bean>

<bean id="xxxSchema" class="org.springframework.xml.xsd.SimpleXsdSchema">
    <property name="xsd" value="/WEB-INF/schemas/XXX.xsd"/>
</bean>
3. 总结

Spring Web Services是一个很好的Web服务框架,它提供了很多便利,同样也存在一些缺点。对于开发者来说,如果想要快速创建一个Web服务,Spring Web Services是个不错的选择。对于初学者来说,还是需要做好相关的学习和准备。