Maven 工件 (09/2007)

工程 | Ben Hale | 2007年9月18日 | ...

到目前为止,Spring 产品组合 Maven 工件,尤其是快照,创建不一致,并且散布在各个位置。在过去的两周里,我们一直在努力使项目在创建和上传这些工件方面更加一致。

Maven 存储库

Spring 产品组合中 Maven 支持最有用的一项改进是使用一致的存储库位置。根据您对代码的熟悉程度,有三个不同的存储库。

发布存储库

对于任何最终发布(Spring 2.5、Spring Web Flow 2.0 等),该版本的 Maven 工件将上传到 Maven Central 存储库(http://repo1.maven.org/maven2)。使用此存储库无需您做任何操作,因为 Maven 会自动在此处查找工件。

此存储库中的工件确实遵循预期的存储库行为,并且不会(也无法)被删除。

里程碑存储库

对于任何里程碑版本(Spring 2.5-RC1、Spring Web Flow 2.0-M2 等),该版本的 Maven 工件将上传到 Spring 里程碑存储库(http://s3.amazonaws.com/maven.springframework.org/milestone)。使用此存储库需要您在 POM 中的<repositories/>元素中添加一个条目。它应该如下所示


<repository>
    <id>spring-milestone</id>
    <name>Spring Portfolio Milestone Repository</name>
    <url>http://s3.amazonaws.com/maven.springframework.org/milestone</url>
</repository>

此存储库中的工件遵循预期的存储库行为,并且将定期删除。在最终版本(Spring 2.6、Spring Web Flow 2.1 等)发布后,将删除先前版本工件的所有里程碑版本。例如,当 Spring 2.6 发布时,将删除 Spring 2.5 里程碑,而 Spring 2.6 里程碑将保留。

快照存储库

对于任何快照构建(Spring 2.5-SNAPSHOT、Spring Web Flow 2.0-SNAPSHOT 等),该构建的 Maven 工件将上传到 Spring 快照存储库(http://s3.amazonaws.com/maven.springframework.org/snapshot)。使用此存储库需要您在 POM 中的<repositories/>元素中添加一个条目。它应该如下所示


<repository>
    <id>spring-snapshot</id>
    <name>Spring Portfolio Snapshot Repository</name>
    <url>http://s3.amazonaws.com/maven.springframework.org/snapshot</url>
</repository>

此存储库中的工件遵循预期的存储库行为,并且将定期删除。将至少保留给定工件的最后 10 个快照构建。如果从分发版中删除了工件,则其快照构建将立即删除。在发布里程碑或最终版本时,将删除工件的所有快照,并为下一个版本创建新的快照。

存储库浏览

里程碑和快照存储库都托管在Amazon 的 S3服务上,因此目录结构对人类来说不可读。要以人类可读的格式查看存储库,请使用S3Browse实用程序。

仅将这些 URL 用于人类可读的查看。如果将它们用作 POM 的 URL,则会遇到错误。

工件源代码

另一个重要的改进是为所有版本添加了源工件。您会在里程碑存储库中注意到所有工件都部署了源代码。在我们以后的所有最终版本中也将如此。具体来说,从 Spring 2.5 版本开始,除了组合的 Spring 源代码外,每个模块也将有一个源工件。

Spring 快照

最终的改进尚未完善;Spring 的每晚快照。我很高兴地说,这即将完成。我仍在解决与Maven Ant 任务相关的最终问题,但这最终将开始显示,并且在出现时我会再次宣布。同样,您可以预期此功能最终将扩展到所有其他基于 ANT 的 Spring 产品组合项目,以便所有项目都将创建 Maven 快照以及里程碑。

Spring Framework 2.1 变成了 Spring Framework 2.5!

工程 | Juergen Hoeller | 2007年9月10日 | ...

我的第一篇博文 - 并且要宣布一个重大消息 :-)

在发布了一系列 Spring 2.1 里程碑版本后,我们一直在审查我们引入的功能的整体集合

  • 完整的Java 6 和 Java EE 5 支持(JDBC 4.0、JTA 1.1、JavaMail 1.4、JAX-WS 2.0 等)
  • 功能齐全的基于注解的依赖注入(包括对“限定符”注解的支持)
  • 支持类路径中的组件扫描(自动检测带注解的类)
  • AspectJ 切点表达式中的bean 名称切点元素
  • 内置支持AspectJ 加载时织入(基于 Spring 的 LoadTimeWeaver 抽象)
  • 更多 XML 配置命名空间(“context”、“jms”)以实现最大便利
  • 扩展的 SimpleJdbcTemplate功能(支持命名参数等)
  • 正式获得 WebSphere 支持认证(支持 WebSphere 6 UOWManager 功能等)
  • Spring 框架 jar 作为符合 OSGi 规范的捆绑包开箱即用
  • Spring ApplicationContext 可以部署为 JCA RAR 文件(用于无头应用程序模块)
  • JCA 1.5 消息端点管理(用于 Spring 管理的 JMS 和 CCI 消息侦听器)
  • 完全修改了集成测试的框架(支持 JUnit 4 和 TestNG)
以及许多细节方面的改进。几乎所有这些功能都已在最近发布的 2.1 M4 中提供。

我们得出结论,这远远超出了我们最初为 Spring 2.1 制定的计划。里程碑中使用的版本号 2.1 并没有反映此主要版本中功能的重要性及其全面性。

因此,我很高兴地宣布,2.1 里程碑将无缝地转变为即将发布的主要版本 Spring Framework 2.5!Spring 2.5 计划于……最终发布。

Spring Framework 2.1 M4 发布

发布 | Juergen Hoeller | 2007年9月10日 | ...

尊敬的 Spring 社区:

我很高兴地宣布 Spring Framework 2.1 M4 已发布!此里程碑版本引入了

  • “限定符”注解支持,用于选择特定的 @Autowired 匹配;
  • 我们下一代 Spring TestContext 框架,支持 JUnit4;
  • 用于存储过程调用的 SimpleJdbcCall 操作对象;
  • 支持自动装配脚本对象(Groovy、JRuby、BeanShell);
  • 支持 Spring Web MVC 中的 Tiles2 视图。

Spring 2.1 M1 Released

 

这让我想到了一些更令人兴奋的消息……

我们一直在审查最近 2.1 里程碑版本中引入的功能的整体集合

  • 完整的 Java 6 和 Java EE 5 支持
  • 功能齐全的基于注解的依赖注入
  • 支持类路径中的组件扫描
  • AspectJ 切点表达式中的“beanName”切点元素
  • 内置支持 AspectJ 加载时织入
  • 更多 XML 配置命名空间(context、jms)
  • 扩展的 SimpleJdbcTemplate 功能
  • 正式获得 WebSphere 支持认证
  • Spring ApplicationContext 可以部署为 RAR 文件
  • JCA 1.5 消息端点管理(用于 JMS 和 CCI)
  • 完全修改了集成测试的框架

我们得出结论,这远远超出了我们最初为 Spring 2.1 制定的计划。里程碑中使用的版本号 2.1 并没有反映此版本中功能的重要性及其全面性。

因此,我很高兴地宣布,下一个版本将被称为 Spring Framework 2.5 RC1,2.1 里程碑将无缝地过渡到 Spring Framework 2.5 作为即将发布的主要版本!请查看Interface21 团队博客以获取正式公告以及在我们接近最终版本时有关特定 Spring 2.5 功能的后续帖子。

Spring 2.1 M4 来了。Spring 2.5 万岁!:-)

祝好,

Juergen Hoeller
Spring Framework 开发负责人
Interface21 - http://www.interface21.com

Interface21 在国会证词中被提及

工程 | Rod Johnson | 2007年9月8日 | ...

Interface21 国会证词中被提及

风险投资家兼 Core Capital Partners 创始人 Jonathan Silver 周四作证反对拟议中对适用于 VC 的税率进行的更改。他的论点之一是,以风险投资为基础的公司在美国创造就业岗位

下一个重要的商业机会将来自哪里? 事实是,没有人知道,这就是为什么风险投资家会在所有 50 个州,以及所有地方寻找这些机会。 这就是为什么风险基金会支持纽约市的 Music Nation 和密歇根州安阿伯的 Incept Biosystems,**佛罗里达州西墨尔本的 Interface21**、马萨诸塞州韦斯特伯勒的 Boston Power 和德克萨斯州圣安东尼奥的 Click Forensics 的原因。

实际上,我们的总部即将搬迁到加利福尼亚州的圣马特奥。 与许多软件供应商一样,我们相信硅谷是实现我们潜力的最佳地点。 我们的大部分合作伙伴都集中在这里,这里也是在软件行业招聘高管人才的好地方。 然而,Silver 的观点仍然有效。 我们确实在佛罗里达州创造就业机会——我们的网络团队位于那里,并且目前正在使用 Spring Web Flow 做很棒的事情……

Spring Web Flow 下一代版本的第一个里程碑版本发布

发布 | Keith Donald | 2007 年 8 月 28 日 | ...

尊敬的 Spring 社区:

我们很高兴地宣布,下一代 Spring Web Flow 版本的第一个里程碑版本现已推出。 Spring Web Flow 2.0 M1 引入了几个主要的新功能,包括对流管理持久化上下文、改进的 Java Server Faces 支持、完整的统一表达式语言 (EL) 支持以及更全面的 示例 Web 应用程序

 

Spring Web Flow 2.0 是一个用于开发 Java Web 应用程序控制器的下一代框架。 该框架提供了一个统一的运行时环境,用于在各种环境中执行无状态有状态的客户端交互。

Web Flow 2.0 版本的目标

如今,大多数应用程序开发人员使用 Spring Web Flow 来实现线性页面流程(例如向导),方法是将 Web Flow 集成到他们的“基础”Web 框架(例如 Spring MVC)中。 这些页面流程表现出线性的导航规则,是有状态的,并且形成动态的、自包含的 Web 应用程序功能模块。 一个很好的例子是贷款申请流程:Web Flow 独有的流程定义语言为实现这些类型的流程提供了自然的编程模型。

Spring Web Flow 2.0 的总体目标是正式将产品从现在的状态(主要用于实现线性向导的框架)转变为其一直旨在成为的状态:一个通用的应用程序控制器引擎,用于为所有类型的客户端交互提供动力。 这些交互包括向导、无状态的“RESTful”交互以及“Web 2.0”应用程序中经常出现的更细粒度的非线性/异步交互。

Spring Web Flow 2.0 将为 Spring 社区提供一个统一的应用程序控制器框架和运行时环境,适用于执行所有类型的客户端交互,并能够集成各种视图渲染技术和 UI 组件模型。 此统一的运行时环境将能够一致地应用管理检测、安全、AJAX 和托管持久性等独特功能。

查看完整的 Spring Web Flow 2.0 路线图

Web Flow 2.0 M1 新功能和值得注意的功能

第一个 2.0 版本里程碑在通往 2.0 正式版的道路上引入了几个主要的新功能。 这些功能在下面进行了描述。

使用 JPA 和 Hibernate 进行流管理的持久化上下文

Spring Web Flow 2.0 M1 引入了对使用 Hibernate 和 JPA 的流管理持久化上下文的支持。 此版本中包含的新 酒店预订示例应用程序 演示了此功能。 以下是它在预订示例上下文中的工作原理

  • 当新的酒店预订流程开始时,会自动为您创建一个持久化上下文。
  • 在流程中进行操作时,持久化上下文会自动用于所有数据访问操作。 您无需担心查找与流程绑定的 EntityManager 实例,或以任何方式管理它。
  • 当您授权预订时,对托管持久实体的所有更改都会自动提交并刷新回数据库。 如果您选择取消预订,则不会提交任何更改。

此酒店预订流程的图形化 Spring IDE 视图如下所示

预订流程 

改进的 Java Server Faces (JSF) 支持

Spring Web Flow 2.0 M1 引入了Spring Faces 模块(spring-faces-2.0-m1.jar),这是 Web Flow 发行版中附带的一个组件,其中包含对使用 Java Server Faces 开发 Web 应用程序的组织的一流支持。 现有的 Web Flow + JSF 集成已分解到此项目中,并且此项目将成为所有未来 JSF 集成工作的主体。

Spring Faces 模块为 Spring 社区提供了一个专门的项目,用于探索其他 JSF 集成机会。 2.0 M1 中的初始工作引入了与 Ext 的集成,这是一个流行的 Javascript GUI 小部件框架。 提供了几个轻量级的 JSF UI 组件,这些组件封装了丰富的 Ext 小部件的渲染。 我们采用的方法允许 Ext 小部件装饰标准 JSF 组件,添加类似桌面的外观和额外的 UI 行为(例如客户端验证)。 2.0 M1 中提供了以下 Ext 组件装饰器

  • 一个日期验证器组件,它对日期文本字段执行丰富的客户端验证,并提供一个外观精美的日期选择器控件。
  • 一个文本验证器,它对自由格式文本输入字段执行丰富的客户端验证。
  • 一个数字验证器,它对数字文本字段执行丰富的客户端验证。

酒店预订示例应用程序中也使用了日期验证器控件的屏幕截图,如下所示

 

Ext 控件外观很棒,并且由于所有 UI 行为都在客户端执行,因此 UI 的响应速度非常快。 作为 Spring Faces 模块的一部分,我们将在未来的 Web Flow 版本里程碑中在此领域提供更多支持。

拥有一个专用的 Spring Faces 模块还可以简化在 JSF 环境中设置 Spring Web Flow 的过程。 在 2.0 M1 之前,开发人员需要手动修改faces-config.xml 来设置样板 Spring/SWF 集成管道。 使用 2.0 m1,只需将 spring-faces-2.0-m1.jar 包含在类路径中,即可自动完成此设置。

统一表达式语言 (EL) 支持

此版本中的另一个新功能是对统一 EL 的完全支持,它为 Spring Web Flow 当前默认使用的基于 OGNL 的表达式解析器提供了一种替代方案。 现在建议在 JSF 环境中使用统一 EL,并且它将在未来的里程碑中成为 JSF 开发人员的默认选项。

酒店预订流程定义中使用的 EL 表达式示例如下所示:

 

上面的“id”表达式评估存储在 Flow Scope 中的当前酒店标识符。 请注意,这里不需要任何显式的 flowScope 前缀。 开发人员只需按名称引用变量,ELExpressionEvaluator 就会通过搜索各种作用域来处理变量解析。 这使得 Web Flow 定义中的托管 bean 引用与用于模型绑定表达式的 JSF 视图中的引用完全一致。 例如,请参阅以下来自 bookingForm.xhtml 视图的代码段

 

2.0 版本说明

Spring Web Flow 2.0 要求使用 Spring 2.0 或更高版本以及 Java 1.4 或更高版本。

Spring Web Flow 2.0 将尽可能地保持与 1.0.x 基于 XML 的流程定义语言的向后兼容性。 预计一些 SWF SPI 将在未来的 Web Flow 2.x 里程碑中发生变化,因为 Web Flow 正在发展成为一个完整的控制器框架。

Spring Web Flow 2.0 的未来里程碑将引入用于在真正的编程语言中定义流程的新方言,从而为当前基于 XML 的流程定义语法提供更强大的替代方案。 基于 POJO 的 Java 流程定义语法正在开发中,基于 Groovy 的方法也在开发中。 此外,还将引入用于实现 RESTful 和 CRUD 流程的高级流程方言。 因为 Web Flow 定义 API 和执行运行时与任何具体的流程定义语法是分开的,所以我们可以很自然地引入新的语法,以不同的方式在运行时设计应用程序控制器。

对于 JSF 用户,Spring Web Flow 2.0 和 Spring Faces 可以在 JSF 1.1 和 JSF 1.2 上运行。 Spring Faces 模块中的 UI 组件库独立于 Web Flow 运行时,也可以与 JSF 的默认导航处理程序一起使用。

Spring Web Flow 2.0 将继续为 Servlet 2.4 或更高版本、Portlet 1.0 或更高版本以及 JUnit 3.8.1 或更高版本的环境提供完全支持。

Spring Web Flow 2.0 将继续在 Struts 1.2 或更高版本和 Spring MVC 2.0 或更高版本的环境中运行,并且到 2.0 正式版时也将可用作独立的 Web 应用程序控制器框架。

Spring Web Services 1.0 发布

发布 | Arjen Poutsma | 2007 年 8 月 17 日 | ...

经过两年的开发,我们很高兴地宣布 Spring Web Services 1.0 现已推出。

Spring-WS Logo

下载 | 参考文档 | API 文档

Spring Web Services 是 Spring 社区的一个产品,专注于创建文档驱动的、契约优先的 Web 服务。 Spring Web Services 的主要功能包括...

  • 使最佳实践成为简单实践:Spring Web Services 使得实施最佳实践变得更容易。 这包括 WS-I 基本配置文件、契约优先开发以及在契约和实现之间进行松耦合等实践。
  • 强大的映射:您可以根据消息有效负载、SOAP Action 标头或 XPath 表达式将传入的 XML 请求路由到任何处理程序。
  • XML API 支持:传入的 XML 消息可以在标准 JAXP API(如 DOM、SAX 和 StAX)中处理,也可以在 JDOM、dom4j、XOM 或甚至编组技术中处理。
  • 灵活的 XML 编组:Spring Web Services 发行版中的对象/XML 映射模块支持 JAXB 1 和 2、Castor、XMLBeans、JiBX 和 XStream。 因为它是一个单独的模块,所以您也可以在其他环境中使用它。
  • 重用您的 Spring 专业知识:Spring-WS 使用 Spring 应用程序上下文进行所有配置,这可以使您快速启动和运行。 此外,Spring-WS 的体系结构类似于 Spring-MVC 的体系结构。
  • 支持 WS-Security:WS-Security 允许您对 SOAP 消息进行签名、加密和解密,或针对它们进行身份验证。 并且它与 Spring Security 集成!

The Spring Experience(2007 年 12 月 12 日至 15 日,佛罗里达州好莱坞威斯汀外交官酒店)上了解有关 Spring Web Services 的更多信息。 Arjen 将在那里发表关于 Spring Web Services 的两个主题演讲:Spring Web Services 简介使用 Web 服务进行 WS-DuckTyping

请参阅 版本说明,了解自 1.0-RC2 以来的修复列表。

最后,要感谢所有参与其中的人。 没有你们,这一切都不可能实现!

阿姆斯特丹 Java 聚会 Q307,9 月 21 日

工程 | Alef Arendsen | 2007 年 8 月 2 日 | ...

下一个 Java 聚会的时间到了。 我决定将这个在阿姆斯特丹举行的季度活动的第七期推迟到夏天之后,因为荷兰的大多数人在 8 月左右都会休假几周。

我查看了我们的内部日程安排,9月21日似乎是9月剩下的唯一一天,所以希望它也适合其他人的日程安排。

我们将和去年4月的聚会地点一样,因为这对我们来说非常方便,而且每个人似乎都对此表示满意。第一次Java聚会在我最喜欢的阿姆斯特丹聚会场所举行……

Spring Framework 2.1 M3 发布

发布 | Juergen Hoeller | 2007年8月1日 | ...

尊敬的 Spring 社区:

我很高兴地宣布 Spring 2.1 M3 已经发布!

这是 Spring 2.1 系列的第三个里程碑版本,引入了集合的自动装配、"bean(name)" 切点元素、各种 JDBC 增强功能、JRuby 1.0 支持以及整个框架的许多改进。

Spring 2.1 M1 Released

 

请参阅变更日志JIRA路线图,以获取有关此版本中引入的新功能的更多详细信息。

仅供参考,我们还发布了 2.0.7 快照,其中包含从 2.1 M3 反向移植的修复程序。请尝试使用最新的快照作为 2.0.5/2.0.6 的直接替换!官方的 2.0.7 版本计划于 8 月 15 日发布。 

享受! 

Juergen Hoeller
Spring Framework 开发负责人
Interface21 - http://www.interface21.com

揭穿神话:代理对性能的影响

工程 | Alef Arendsen | 2007年7月19日 | ...

在最近的一篇博文中,Marc Logemann谈到了代理性能的话题。在他的文章中,他要求“Spring团队”提供一份白皮书。我不想花很多篇幅来讨论代理和字节码编织机制之间精确到纳秒级的差异,但我认为再次重申这些差异是什么以及这场讨论是否重要是很有价值的。

什么是代理,我们为什么要使用它们?

首先让我们简要回顾一下代理的用途(一般来说,以及在 Spring 中)。根据四人帮(GoF)关于设计模式的书,代理是一个替代对象或占位符,用于控制对另一个对象的访问。因为代理位于对象调用者和实际对象之间,所以它可以决定阻止调用实际(或目标)对象,或者在调用目标对象之前执行某些操作。prox.jpg

换句话说,代理可以作为实际对象的替身,为这些对象应用额外的行为——无论是安全相关的行为、缓存还是性能测量……

Grails 和 Maven:一段不和谐的婚姻

工程 | Dave Syer | 2007年7月14日 | ...

简介

Grails似乎正在蓬勃发展,并且看起来它确实“很有潜力”,正如人们所说。我对在 Web 应用程序领域之外稍微扩展这些潜力非常感兴趣。如果您了解我在Spring Batch方面的工作,您可能能够猜到这将把我引向何方。但在这篇文章中,我只想分享一些我在 Grails 应用程序的基本、底层部署和构建方面获得的经验。

我对 Maven 2 既爱又恨,我正在学习爱上 Grails,但遗憾的是,两者并不特别兼容。它会……

获取 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

领先一步

VMware 提供培训和认证,以加速您的进步。

了解更多

获得支持

Tanzu Spring 在一个简单的订阅中提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件。

了解更多

即将举行的活动

查看 Spring 社区中所有即将举行的活动。

查看全部