Spring 的一种 Java 配置选项

工程 | Rod Johnson | 2006年11月28日 | ...

得益于我们可插拔的理念和大量辛勤的实现工作,Spring IoC 容器(像 Spring 的大部分其他部分一样)极其灵活。

常常被忽视的一点是,Spring 配置不一定必须是 XML,尽管 XML 格式是目前最常用的。Spring 有自己的内部元数据格式,以 BeanDefinition 接口及其子接口的形式存在。代表 IoC 容器实例的 BeanFactory 和 ApplicationContext 实现由这种 Java 元数据驱动,并且与元数据解析完全独立,元数据解析是…

Spring 2.0 中的 XML 语法糖

工程 | Rod Johnson | 2006年11月26日 | ...

如果你关注了10月份的 Spring 2.0 版本,你会知道其中一个重要的新特性是 XML 扩展命名空间:定义新的 XML 元素和属性的能力,这些元素和属性可以生成 Spring 元数据,并可以与常规的 Bean 定义一起使用。这提供了一个宝贵的新扩展点,使得 Spring 配置对于许多重复任务来说更容易使用,并且更强大。

然而,还有一个你可能没有注意到的甜美小语法糖——这可能是因为 Spring 团队里还没有人告诉你……我曾对自己承诺…

Spring Framework 2.0.1 发布

发布 | Juergen Hoeller | 2006年11月23日 | ...

亲爱的 Spring 社区:

我们很高兴地宣布 Spring 2.0.1 已经发布。下载 | 文档 | 变更日志

这是 Spring 2.0 的第一个维护版本,包含自 2.0 最终版本发布以来报告的大多数 bug 修复以及许多次要增强。此版本还引入了 OpenJPA 支持和 GlassFish 织入支持。此外,它还对 AspectJ 支持的内部机制进行了重新设计,并改进了 Bean 定义工具 SPI。

一如既往,详细信息请参阅变更日志

如果您是 Spring 2.0 系列的新用户,请参阅原始的 Spring 2.0 发布公告以获取更多信息。

供您参考,Spring 2.0.2 版本计划于12月底发布。我们的 JIRA 路线图概述了该版本计划解决的问题。

Juergen
-----
Juergen Hoeller
Spring Framework 开发负责人
Interface21 首席架构师
http://www.springframework.org
http://www.interface21.com

Spring LDAP 1.1.1 发布

发布 | Ulrik Sandberg | 2006年11月18日 | ...

亲爱的 Spring 社区:

我们很高兴地宣布 Spring LDAP 1.1.1 版本已经发布。这是一个更新版本,增加了一些新功能并修复了 1.1 版本中的一些问题。下载 | 变更日志 | 文档 | API

一些更重要更改的总结

  • 增加了在搜索中使用服务器端控件的功能。
  • DirContextAdapter.getNameInNamespace() 现在返回完整的 DN。
  • DistinguishedName 现在支持由“+”号分隔的多值 RDN,例如“cn=Rod+sn=Johnson”。
  • 增加了接受返回属性名称数组的查找方法。
  • 内部将 Spring 升级到 2.0。仍然支持 Spring 1.2.8。

关于 Spring LDAP
Spring LDAP 是一个简化 LDAP 操作的 Java 库,基于 Spring 的 JdbcTemplate 模式。该框架减轻了用户查找和关闭上下文、遍历 NamingEnumerations、编码/解码值和过滤器等的负担。

LdapTemplate 类封装了传统 LDAP 编程中涉及的所有底层工作,例如创建、遍历 NamingEnumerations、处理异常和清理资源。这使得程序员能够处理重要的事情——在哪里找到数据(DN 和过滤器)以及如何处理它(映射到域对象和从域对象映射、绑定、修改、解绑等),就像 JdbcTemplate 解除了程序员除了实际 SQL 以及数据如何映射到域模型之外的所有负担一样。

除此之外,Spring LDAP 还提供了从 NamingExceptions 到 DataAccessExceptions 的异常转换,以及用于处理过滤器、LDAP 路径和属性的几个实用工具。

Spring-LDAP 需要 J2SE 1.4。构建需要 J2SE 1.4。运行示例需要 J2EE 1.4(Servlet 2.3, JSP 1.2)。

从哪里开始
从上面的链接下载分发包。分发包包含详尽的 JavaDoc 文档以及完整的参考文档和一个演示如何使用 Spring LDAP 的示例应用程序。

主页
Spring LDAP 的永久主页是 http://www.springframework.org/ldap

历史
Spring LDAP 基于 SourceForge 的 LdapTemplate 项目。建议 LdapTemplate 的用户切换到 Spring LDAP。

Mattias Arthursson 和 Ulrik Sandberg
Spring LDAP 项目团队

Spring Framework:项目和名称的起源

工程 | Rod Johnson | 2006年11月09日 | ...

我经常被问到“Spring”这个名字的起源。

这个名字可以追溯到2002年底。2002年11月,我出版了 Expert One-on-One J2EE Design and Development。这本书附带了30,000行框架代码,这些代码占据了我全职撰写这本书整整一年的大部分时间。(写一本750页的书本身工作量就很大;写一个与之配套的实质性框架简直是自虐。那很辛苦。)Spring Framework 的许多基本概念都在那里:一个已经具备强大功能的 IoC 容器,包括 BeanFactory 和 ApplicationContext…

最后机会加入澳大利亚的500多名参与者

工程 | Ben Alex | 2006年11月01日 | ...

如果你正在阅读这篇博客,很可能你已经知道 Spring 是一个非常流行的框架。大多数使用过它的 J2EE 开发者都非常喜欢它,这体现在 12+ 本书、1,000,000+ 下载、14,000+ 论坛成员等。然而,即使是我,当我一周多前发布澳大利亚 Spring 用户组的公告时,产生的兴趣之大也让我惊讶…截至今天,我们已有超过五百名注册参加这三次会议。事实上,我们已经需要将悉尼会议移至更大的场所,而布里斯班墨尔本的会议几乎已经预订满。如果你是…

Oracle、开源和商品化

工程 | Rod Johnson | 2006年10月28日 | ...

我在旧金山参加了 Oracle World 大会。我甚至在 Thomas Kurian 关于 Java 中间件的主题演讲中简短地发言了。但是 Neelan 和我周二必须离开,错过了大新闻:Larry Ellison 宣布 Oracle 正在为 Linux 提供支持

从开源业务的角度来看,这是一个有趣的事件。更广泛的影响是什么?

Oracle 正在为一个他们没有创建且不受他们控制的开源产品提供支持。

这之所以可能,原因有几个

  • Linux 不是一个产品。它是一类技术,由公司或组织进行组装、文档编写、分发和支持产品。
  • Linux 支持在某种程度上已经商品化。Red Hat 只是提供支持的几个分发商之一。
  • Linux 的领导权是分散的。Linus Torvalds 不为大型分发商工作;Red Hat 做得比大多数公司多,但没有一家公司能提供明确的领导。
  • Linux 的领导力不如你想象的那么重要。Linux 主要不是创新的引擎,而是商品化的引擎。

然而,思考像 Oracle 这样的公司在提供服务方面的局限性是很有趣的…

Interface21 / Spring 在 Oracle OpenWorld 2006

工程 | Neelan Choksi | 2006年10月23日 | ...

Rod 和我正在旧金山参加 Oracle OpenWorld 2006。这确实是一个盛况。我无法决定“傲慢”还是“令人印象深刻”是恰当的描述方式,但数字不会撒谎。他们预计大会将有45000人参加,旧金山市认为此次大会将为城市带来50-6000万美元的收入。显然,不允许任何 Oracle 员工住在机场以北的酒店。更令人震惊的事情之一是,城市为大会封锁了 Moscone 前面的 Howard 街的一部分。

今天早上的 Oracle Develop 主题演讲由 Oracle 高级副总裁 Thomas Kurian 发表,Spring 成为了关注焦点。Thomas 让 Rod 在主题演讲期间上台,描述 Spring 是什么以及 Spring 2.0 的新特性。Rod 还谈到了合作…

Spring 2.0 正式版发布,首日下载量超过10,000次

工程 | Rod Johnson | 2006年10月05日 | ...

Spring 2.0 已于周二发布最终版本!这是 Spring 团队 9 个月辛勤工作以及大量用户反馈(感谢!)的成果,也是向前迈出的重要一步。

我保证我的下一篇博客将讨论与下载量无关的内容。我一直在尝试一些有趣的方法来测试 @AspectJ 注解中的切入点,所以下次我希望发布一些有趣的代码。

但我们刚刚注意到 SourceForge 提供了一些令人惊叹的数据,我忍不住要发出来。在最初的 24 小时内,Spring 2.0 的下载量超过了 10,000 次!几个月来,人们对 Spring 2.0 的兴趣一直在增强——一些用户甚至已经在生产环境中使用了一个发布候选版本,包括欧洲一个知名的媒体网站——我想 Keith 精彩的发布页面

Spring Web Flow 1.0 RC4 发布

发布 | Keith Donald | 2006年10月05日 | ...
亲爱的 Spring 社区:
 
我们很高兴地宣布 Spring Web Flow 1.0 RC4 已发布。
 

 

Spring Web Flow 是 Spring 社区的一个产品,专注于 Web 应用程序中用户界面流程的编排。

此版本包含许多改进和几个令人兴奋的新功能。我们认为这是迄今为止最稳定的版本,最终也是使 Spring Web Flow 1.0 最终版本的路线图功能完善的版本。Spring Web Flow 1.0 最终版本将在下周发布,改动最小。在此期间,我们鼓励您测试 1.0 RC4,以帮助在大规模发布 1.0 之前捕获任何剩余的问题。

请注意,此版本中有影响用户行为的更改。1.0 RC3 或更早版本的用户应查阅升级指南,其中详细概述了这些更改。

1.0 RC4 的新特性和值得注意的列表令人兴奋,包括:

新特性和值得注意之处

作为 Spring Web Flow 1.0 最终版本之前的最后一个发布候选版本,Spring Web Flow 1.0 RC4 引入了强大的新功能,例如渲染动作 (1)、评估动作 (2)、设置动作 (3)、闪存范围 (4)、流程执行属性 (5) 和暂停时总是重定向 (6)。它提供了增强的文档、更好的流程定义验证、智能默认值以及一个完整的自定义 Spring 2.0 配置 Schema (7) 用于配置流程执行引擎。

  • (1) 渲染动作在响应渲染之前执行应用程序行为。当视图状态被要求进行可渲染视图选择时,在进入或由重定向或浏览器刷新按钮触发刷新时,都会调用渲染动作。以下示例显示了一个渲染动作,它在渲染结果视图之前执行电话簿搜索。

    <view-state id="displayResults" view="searchResults">
        <render-actions>
            <bean-action bean="phonebook" method="search">
                <method-arguments>
                    <argument expression="flowScope.searchCriteria"/>          
                </method-arguments>
                <method-result name="results"/>
            </bean-action>
        </render-actions>
        <transition on="newSearch" to="enterCriteria"/>
        <transition on="select" to="browseDetails"/>
    </view-state>

  • (2) 评估动作根据流程执行状态评估表达式。默认情况下,表达式(基于 OGNL)可以针对流程执行的根 RequestContext 可访问的任何对象,包括任何范围(例如流程范围)中的对象。以下示例显示了一个评估动作,它调用“game”流程范围 Bean 上的“makeGuess”方法
    <action-state id="makeGuess">
        <evaluate-action expression="flowScope.game.makeGuess(requestParameters.guess)">
            <evaluation-result name="guessResult"/>
        </evaluate-action>
        <transition on="CORRECT" to="showAnswer"/>
        <transition on="*" to="enterGuess"/>
        <transition on-exception="java.lang.NumberFormatException" to="enterGuess"/>
    </action-state>
  • (3) 设置动作设置范围类型中的属性值,例如流程范围。该属性可以是顶级属性,也可以是嵌套属性路径上的属性。以下示例显示了一个设置动作,它在闪存范围中将“fileUploaded”属性设置为“true”。
    <action-state id="uploadFile">
        <action bean="uploadAction" method="uploadFile"/>
        <transition on="success" to="selectFile">
            <set attribute="fileUploaded" scope="flash" value="true"/>
        </transition>
    </action-state>
  • (4) 闪存范围是一种新的范围类型,用于跨重定向和视图的任何刷新持久化属性。当信号触发离开视图的事件时,闪存范围将被清除。以下完整的流程定义示例展示了如何使用闪存范围将“fileUploaded”属性暴露给 selectFile 视图状态,以便在成功上传后显示成功消息。
    <flow xmlns="http://www.springframework.org/schema/webflow"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://www.springframework.org/schema/webflow
                                           http://www.springframework.org/schema/webflow/spring-webflow-1.0.xsd">
   
        <start-state idref="selectFile"/>
       
        <view-state id="selectFile" view="fileForm">
            <transition on="submit" to="uploadFile"/>
        </view-state>
   
        <action-state id="uploadFile">
            <action bean="uploadAction" method="uploadFile"/>
            <transition on="success" to="selectFile">
                <set attribute="fileUploaded" scope="flash" value="true"/>
            </transition>
        </action-state>
       
    </flow>
  • (5) 流程执行属性允许您设置可以影响流程执行行为的自定义属性。以下示例显示了在 Portlet 环境中将“alwaysRedirectOnPause”属性设置为 false 的说明(在此环境中重定向通常不适用)。
    <flow:executor id="flowExecutor" registry-ref="flowRegistry">
        <flow:execution-attributes>
            <flow:alwaysRedirectOnPause value="false"/>
        </flow:execution-attributes>
    </flow:executor>
  • (6) “暂停时总是重定向”提供了默认的 POST+REDIRECT+GET 行为,无需特殊编码。现在,默认情况下,当进入视图状态时会自动发出重定向。这会触发刷新到流程执行 URL,该 URL 在会话活动期间保持稳定。
  • (7) 新的 Spring 2.0 配置方言极大地简化了系统配置,并提供了强大的验证和工具支持。现在,配置 webflow 的基础设施就像定义两个元素一样简单,如下所示的完整示例:
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:flow="http://www.springframework.org/schema/webflow-config"
           xsi:schemaLocation="
               http://www.springframework.org/schema/beans
               http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
               http://www.springframework.org/schema/webflow-config
               http://www.springframework.org/schema/webflow-config/spring-webflow-config-1.0.xsd">
   
        <!-- Launches new flow executions and resumes existing executions. -->   
        <flow:executor id="flowExecutor" registry-ref="flowRegistry"/>
       
        <!-- Creates the registry of flow definitions for this application -->
        <flow:registry id="flowRegistry">
            <flow:location path="/WEB-INF/flows/**-flow.xml"/>
        </flow:registry>
       
    </beans>

更多有关这些功能的信息请参见参考手册。Spring Web Flow 1.0 RC4 进一步完善了参考文档,提供了 70 页的 SWF 使用说明。手册可在 HTMLPDF 格式的在线版本中获取。

入门

开始使用 Spring Web Flow 的最佳方法之一是查看和逐步学习示例应用程序。我们建议查看所有示例,并根据需要从一开始就补充参考手册中的材料。此版本附带了十个示例应用程序,每个应用程序都演示了一组独特的产品功能。这些示例包括:

  1. 电话簿 - 演示大多数功能(包括子流)的原始示例
  2. 销售项 - 演示带有条件转换、流程执行重定向、自定义文本字段格式和续接的向导
  3. 流程启动器 - 演示启动和恢复流程的所有可能方式
  4. 项目列表 - 演示 REST 风格的 URL 和内联流程
  5. 运费计算 - 演示 Spring Web Flow 与 Ajax 技术结合使用
  6. 猜数字 - 演示有状态 Bean、评估操作和“单键”流程执行重定向。
  7. 出生日期 - 演示 Struts 集成
  8. 文件上传 - 演示多部分文件上传、设置操作和闪存范围
  9. 电话簿-Portlet - Portlet 环境中的电话簿示例(注意流程定义没有变化)
  10. 销售项-JSF - JSF 环境中的销售项示例

要快速评估示例应用程序,只需

  1. 解压缩 spring-webflow-1.0-rc4.zip 发布存档
  2. 访问 projects/spring-webflow/build-spring-webflow 目录
  3. 执行 "ant dist" 目标。
  4. 请参阅 "target/artifacts" 目录,获取每个示例的可部署 .war 文件以及解压后的 war 目录。
有关发布存档内容和示例的更多信息,请分别参阅发布 readme.txt 和 projects/spring-webflow/spring-webflow-samples/readme.txt。

所有示例项目都是可以直接导入到 Eclipse 中的 Spring IDE 项目。

感谢所有支持此版本的人。Spring Web Flow 1.0 现在...终于...就在眼前了。

祝您使用愉快!

Spring Web Flow 团队

订阅 Spring 新闻邮件

订阅 Spring 新闻邮件,保持联系

订阅

领先一步

VMware 提供培训和认证,助您快速进步。

了解更多

获取支持

Tanzu Spring 通过简单的订阅即可为 OpenJDK™、Spring 和 Apache Tomcat® 提供支持和二进制文件。

了解更多

近期活动

查看 Spring 社区所有即将到来的活动。

查看全部