【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

Spring 发布 Web Services 的 2.3.1 和 2.4.0 版本

  • 2016-09-26
  • 本文字数:1236 字

    阅读完需:约 4 分钟

Spring 最近发布了 Web Services 项目的 2.3.1 和 2.4.0 版本。

2.3.1 是一个小补丁版本,包含了如下的修正:

2.4.0 版本对代码库进行了重构,从而能够运行在最新的 Spring Framework 4.3 Spring Security 4.1 版本上。它的设计也会兼容将来的 Spring 5.0 。依然在 Java 7 上运行的应用可以采用这个新版本。

在 Spring Web Services 的 Web 站点上,对这个项目是这样定义的:

Spring Web Services(Spring-WS)是 Spring 社区的一个产品,它聚焦于创建文档驱动的 Web 服务。Spring Web Services 致力于简化契约优先(contract-first)的 SOAP 服务开发,允许创建灵活的 Web 服务,它支持多种操作 XML 负载的方式,我们可以从中任意选择一种。

人们采用 Spring-WS 会基于多种原因,在寻找遵循 Web 服务最佳实践的 SOAP 技术栈时,大多数人都会被它所吸引。Spring-WS 能够让最佳实践很容易实现。这些实践包括 WS-I basic profile、契约优先的开发模式以及契约和实现的松耦合。

上面所提到的最佳实践其实在 Spring Web Services 诞生之初就已经考虑到了。在 2007 年 1 月份,InfoQ采访了 Spring Web Services 的创建者 Arjen Poutsma ,当时这个项目正处于起步阶段。当问到是什么东西能够让 Spring Web Services 变得如此独树一帜时,他这样回答道:

首先,它完全专注于契约优先的 Web 服务设计。这意味着你必须要编写自己的 XSD Schema,这个 Schema 定义了你要发送的 XML 消息。你可以引用 WSDL 中的 Schema(尽管 Spring Web Services 也可以从 XSD 中生成 WSDL),并借助它来实现验证的目的。

其次,Spring Web Services 提供了契约和实现之间的一种松耦合:没有 wsdl2java 这样工具将契约直接连接到一个类;而是采用你喜欢的任意方式(DOM、SAX、 StAX,甚至 XML 编组技术如 JAXB、Castor、JIBX 或者 XMLBeans),实现处理传入 XML 的端点(endpoint)。将传入的请求映射到端点的方式,完全由你自己决定:默认情况下,我们提供基于消息内容或 SOAPAction header 的映射。这里的主要思想在于,你不用处理方法调用,而是处理 XML 消息。

正如 Poutsma 当时所言,编写自定义的 XSD Schema 是实现契约优先的 Web 服务的组成部分,在 Spring Web Services 的起步指南中,有如何消费生成 SOAP Web 服务的说明,如今还是按照这种方式来实现的。

读者可以参考 Concretepage.com 上综合的基于 SOAP 的样例应用,它会消费自己生成的Web 服务,从而实现对学生数据的跟踪。完整的项目可以在GitHub 仓库上找到,参见 webservices-soap-produce webservices-soap-consume

Spring Web Services 依然像十年前那样独树一帜。与其他所有的 Spring项目一样,Spring Web Services 能够很好地集成到Spring 生态系统之中。它所使用的特性包含 Spring Security ,并且会配置应用上下文,这个上下文能够用到 Spring Framework 框架中的任意项目之中。

查看英文原文 Spring Releases Versions 2.3.1 and 2.4.0 Web Services

2016-09-26 19:001863

评论

发布
暂无评论
发现更多内容

新一代容器,安全容器kata-container实践

ilinux

Kubernetes 容器

重读《重构2》- 封装记录

顿晓

重构 4月日更

Ubuntu 20.04 快捷键整理

TroyLiu

Linux ubuntu 效率 操作系统 快捷键

一文带你更方便的控制 goroutine

万俊峰Kevin

线程 并发 Go 语言 goroutine

聪明人的训练(十九)

Changing Lin

4月日更

陌陌一面,为什么SpringBoot的 jar 可以独立运行?

Java小咖秀

jar maven springboot 集成 pom

[转] 程序员在工作中如何做好技术积累

小江

技术管理 架构师 自我思考 个人总结

java数组打印的几种方式

Sakura

4月日更

微信朋友圈高性能架构

chenmin

Spark任务等待与运行策略

小舰

4月日更

深入剖析共识性算法 Raft

vivo互联网技术

复制 选举 分布式协调 Leader Follower

细说Python Lambda函数的用法,建议收藏!

华为云开发者联盟

Python 函数 匿名 Lambda函数 表达式

用WASM连接Rust与Python | Rust 学习笔记(三)

李大狗

Python rust 狗哥 Wasm

一文搞懂分布式锁的原理与实现

架构精进之路

分布式锁 4月日更

阿里P7手把手教你!系统学Android从零开始,内含福利

欢喜学安卓

android 程序员 面试 移动开发

面向K8s设计误区

阿里巴巴中间件

云计算 Kubernetes 容器 分布式

这三年被分布式坑惨了,曝光十大坑

悟空聊架构

带你入门目标检测算法

华为云开发者联盟

网络 数据集 目标检测 yolo two-stage

app架构师,10天拿到字节跳动安卓岗位offer,好文推荐

欢喜学安卓

android 程序员 面试 移动开发

图算法系列之无向图的数据结构

Silently9527

Java 数据结构和算法 图算法 无向图

关于 Spring 中 getBean 的全流程源码解析

小傅哥

Java spring 源码分析 小傅哥 getBean流程

五一高铁票难抢?用RPA机器人试试!

华为云开发者联盟

RPA

面试官关于线程池的这个问题把我问懵逼了。

why技术

面试 Jav 1 周年盛典

模块二课后作业

Damon

女朋友问我:什么是 MySQL 的全局锁、表锁、行锁?

一个优秀的废人

MySQL 数据库 锁机制 备份

技术干货 | 基于MindSpore更好的理解Focal Loss

华为云开发者联盟

损失函数 mindspore Focal Loss 图像物体检测 采样

使用gradle插件发布项目到nexus中央仓库

程序那些事

Java maven Gradle 程序那些事

女朋友问我:MySQL 事务与 MVCC 原理是怎样的?

一个优秀的废人

Java 数据库 事务隔离级别 事务 MVCC

MySQL权限管理实战!

Simon

MySQL 权限管理

6种常见的地标识别算法整理和总结

华为云开发者联盟

KNN CNN 地标识别 GLDv2 地标识别算法

【LeetCode】移除元素Java题解

Albert

算法 LeetCode 4月日更

Spring发布Web Services的2.3.1和2.4.0版本_Java_Michael Redlich_InfoQ精选文章