我们对 JCP 的态度
正如我之前所发布的,Interface21 正在参与 Java EE 6 的工作,我们中的一些人,包括我本人、Juergen Hoeller、Keith Donald 和 Rob Harrop,将参与一些专家组。
这意味着我们将更广泛地参与 JCP。我们尊重 JCP 的保密规定和其他条款,因此不会谈论任何非公开的事情。然而,我想谈谈我们参与 JCP 的目标以及我们将带来的基本方法。当然,我们只是众多公司和个人中的一员,所以我们将只会……
Spring Batch 1.0 M2 发布
我们很高兴宣布 Spring Batch 1.0 M2 已发布!此里程碑版本引入了:
- 一套可用于配置和构建批处理应用程序的核心 API。
- 用于在单个虚拟机中管理和监控多步作业的执行环境和实用工具。
- 将框架打包成三个部分:基础设施、核心和执行。
我们期望在….
新的 bean() 切点
Spring 2.5 提供了一个新的切点指示符 -- bean(),它允许选择与名称模式匹配的 bean 中的连接点。现在可以结合自动代理机制和 Spring-AspectJ 集成来选择特定 bean,即使存在多个同类型 bean 也是如此。早些时候,可以使用 BeanNameAutoProxyCreator 实现类似的结果;然而,该机制不适用于 Schema 风格或 @AspectJ 切面。
除了选择特定 bean 外,如果您遵循适当的命名约定,此切点指示符还提供了两种有趣的 bean 选择方式:
- 选择 bean 的垂直切片:如果您遵循 bean 名称中包含表示其业务角色的字符串的约定,bean() 切点可以根据其业务角色选择 bean。例如,如果 bean 名称以表示其业务功能的字符串开头,您可以使用 bean(account*) 切点选择所有会计相关 bean,例如 accountRepository、accountService 和 accountController。
- 选择 bean 的水平切片:如果您遵循 bean 名称中包含表示其架构角色的字符串的约定,bean() 切点可以根据其架构角色选择 bean。例如,如果 bean 名称以表示其架构角色的字符串结尾,您可以使用 bean(*Repository) 选择所有存储库 bean。没有 bean() 切点,您必须依赖包结构或基于类型的切点,这有时可能过于严格。

图 1:使用 bean() 切点根据 bean 名称选择水平和垂直切片
此切点表示 AspectJ 切点表达式语言在 Spring 中的特定扩展,因此仅在基于 Spring 的应用程序中有用。名称模式遵循 AspectJ 的名称模式匹配规则,其中 '*' 是唯一允许的通配符。下表显示了一些示例切点及其选择的 bean。切点 | 选择的连接点 |
---|---|
bean(accountRepository) | 名为 "accountRepository" 的 bean |
!bean(accountRepository) | 除 "accountRepository" bean 外的任何 bean |
bean(*) | 任何 bean |
bean(account*) | 名称以 "account" 开头的任何 bean |
bean(*Repository) | 名称以 "Repository" 结尾的任何 bean |
bean(accounting/showaccount) | 名为 accounting/showaccount 的 bean(例如,处理该 URL 的控制器) |
bean(accounting/*) | 名称以 "accounting/" 开头的任何 bean(例如,处理会计相关 URL 的任何控制器) |
bean(accounting/*/edit) | 名称以 "accounting/" 开头且以 "/edit" 结尾的任何 bean(例如,处理会计相关编辑操作功能的任何控制器) |
bean(*dataSource) || bean(*DataSource) | 名称以 "dataSource" 或 "DataSource" 结尾的任何 bean |
bean(service:name=monitoring) | 名为 "service:name=monitoring" 的 bean |
更多关于开源的废话
在标题恰当的关于 Interface21 的废话一文中,一位 SourceLabs 员工不同意我关于提交权限对于提供可靠开源支持是必需的说法。
在回复之前:我想再次完全澄清我在上一篇博客中已经说过但似乎被某些人误解的一点:Interface21 无意阻止其他人从 Spring 赚钱。我们的历史记录证明了这一点。我们欢迎其他人撰写关于 Spring 的文章并提供 Spring 服务。或者基于 Spring 开发产品,例如 Matt Raible 的 AppFuse。我们祝他们成功。Spring 之所以取得部分成就,是因为……
回复关于开源的废话
我几个月前关于开源商业模式的博客似乎引起了共鸣。我收到了许多积极的回复,并引发了一个名为 "How Software is Built" 的网站的采访请求。我的采访内容在这里。
最终,OpenLogic 的某人发表了一篇有趣的回复。Bryan Noll 在回复我的博客时留下了一些值得正式回应的评论。
首先,我认为您断言当那些对特定项目没有真正投入的人为其提供支持时,这对项目或整个开源领域来说是不健康的,这是一个有趣的观点……一个我以前从未听过的观点。我认为它有足够的有效性,足以让像我们这样的公司考虑并认真审查我们对我们支持的开源项目的责任。在我看来,这种审查的结果将是 OpenLogic 为了减轻您提出的潜在担忧而制定的一个可证明的政策。我肯定不知道那具体会是什么,所以此时请允许我含糊其辞。不过,这恰好与我对于您所说的一些问题相吻合。我认为找到这样一种“可证明的政策”相当简单。OpenLogic 需要明白 Stormy 的帖子中的开场白“从事开源软件开发的开发人员通常有薪水很高的日常工作……所以他们免费从事开源软件开发,并在白天为高薪编写代码”在很大程度上是错误的,需要明白他们希望从中获利的开源软件源自何处,与适当的伙伴合作,并设定一个能够提供真正支持的价格点。另一种选择是停止声称提供企业支持,并明确所提供的只是某种随叫随到的开发协助,不保证能够解决关键问题。这让我回到了为何我对 Stormy 的帖子如此强烈地想要对其进行解构。
我将聚合模式视为超市式的商业模式。当我在超市购物时,我期望他们会从我购买的所有商品中抽取(少量)提成,以回报他们与许多供应商打交道并将所有商品汇集起来……
Maven 工件 (09/2007)
到目前为止,Spring Portfolio 的 Maven 工件,特别是快照版本,创建不一致且分散在各个位置。在过去几周,我们一直在努力使项目在创建和上传这些工件方面更加一致。
Maven 仓库
Spring Portfolio 中 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 个快照构建版本。如果一个工件从发行版中移除,其快照构建版本将立即删除。在里程碑或最终版本发布时,同一工件的所有快照版本都将被删除,并为下一个版本创建新的快照。
仓库浏览
里程碑和快照仓库都托管在 亚马逊 S3 服务上,因此目录结构不可直接阅读。要以可读格式查看仓库,请使用 S3Browse 工具。
- 里程碑版本仓库:http://s3browse.com/explore/maven.springframework.org/milestone
- 快照版本仓库:http://s3browse.com/explore/maven.springframework.org/snapshot
这些 URL 仅供人工查看。如果将它们用作 POM 中的 URL,将会遇到错误。
工件源码
另一个重要的改进是为所有版本添加了源码工件。您会注意到,在里程碑仓库中,所有工件都部署了源码。将来所有最终发布版本也将如此。具体来说,从 Spring 2.5 版本开始,除了合并的 Spring 源码外,每个模块也将有一个源码工件。
Spring 快照版本
最后一个改进目前尚未完成;Spring 的每晚快照版本。很高兴地告诉您,这即将完成。我仍在解决与 Maven Ant Tasks 相关的最后一些小问题,但这最终将会出现,届时我会再次宣布。同样,您可以预期此功能最终会扩展到所有其他基于 ANT 的 Spring Portfolio 项目,以便所有项目都将创建 Maven 快照版本和里程碑版本。
Spring Framework 2.1 变成 Spring Framework 2.5!
我的第一篇博客文章——这是一个多么重大的公告 :-)
在发布了一系列 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 framework jar 包开箱即用,为 OSGi 兼容的 bundles
- Spring ApplicationContext 可以部署为 JCA RAR 文件(用于无头应用程序模块)
- JCA 1.5 消息端点管理(用于 Spring 管理的 JMS 和 CCI 消息监听器)
- 完全修订的集成测试框架(支持 JUnit 4 和 TestNG)
我们得出的结论是,这 显著超出了我们最初对 Spring 2.1 的计划。版本号 2.1(用于 里程碑版本) 未能反映此主要版本中功能的重要性与全面性。
因此,我很高兴宣布 2.1 里程碑版本将无缝 转变为即将到来的主要版本 Spring Framework 2.5! Spring 2.5 计划于……发布最终版本。
Spring Framework 2.1 M4 发布
亲爱的 Spring 社区:
我很高兴宣布 Spring Framework 2.1 M4 已发布!此里程碑版本引入了:
- 支持使用“限定符”注解选择特定的 @Autowired 匹配;
- 支持 JUnit4 的下一代 Spring TestContext Framework;
- 用于存储过程调用的 SimpleJdbcCall 操作对象;
- 支持对脚本对象(Groovy, JRuby, BeanShell)的自动注入;
- 在 Spring Web MVC 中支持 Tiles2 视图。

这让我想到了一些更令人兴奋的消息……
我们一直在回顾我们在最近的 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 在国会证词中被提及
Core Capital Partners 的风险投资家兼创始人 Jonathan Silver 于周四在国会作证,反对针对风险投资公司的拟议税率改革。他的论点之一是,风险投资公司在美国各地创造就业机会。
下一个重要业务将从何而来?真相是,没有人知道,这也是为什么风险投资家在各地、在所有五十个州寻找这些机会的原因。这就是为什么风险投资基金支持纽约市的 Music Nation、密歇根州安娜堡的 Incept Biosystems、佛罗里达州西墨尔本的 Interface21、马萨诸塞州韦斯特伯勒的 Boston Power 以及德克萨斯州圣安东尼奥的 Click Forensics。
实际上,我们的总部正在迁往加利福尼亚州圣马特奥。像许多软件供应商一样,我们相信硅谷是实现我们潜力的最佳地点。我们合作伙伴的最大集中地在这里,而且这里是招聘软件行业高管人才的好地方。然而,Silver 的观点仍然有效。我们确实正在佛罗里达州创造就业机会——我们的网络团队就设在那里,目前正通过 Spring Web Flow 取得巨大成就……