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 日 | ...

如果你关注了十月份的 Spring 2.0 发布,你就会知道其中一个重要的新功能是 XML 扩展命名空间:能够定义新的 XML 元素和属性,这些元素和属性可以生成 Spring 元数据,并可以与常规 bean 定义一起使用。这提供了一个有价值的新扩展点,使得 Spring 配置对于许多重复性任务来说更易于使用,并且功能更强大。

然而,还有一个你可能没有注意到的甜蜜小语法糖——这可能是因为 Spring 团队中没有人告诉你… 我曾向自己保证…

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 在 2006 年甲骨文全球大会

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

Rod 和我正在旧金山参加 2006 年甲骨文全球大会。这确实是一个盛大的场面。我无法决定“傲慢”还是“令人印象深刻”是描述它的正确方式,但数字不会说谎。他们预计大会将有 45000 人参加,旧金山市认为此次展会将为该市带来 5000 万至 6000 万美元的收入。显然,任何甲骨文员工都不允许住在机场以北的酒店。更令人震惊的事情之一是,城市为了会议,封闭了莫斯康门前霍华德街的一段路。

在今天上午由 甲骨文高级副总裁 Thomas Kurian 发表的 Oracle Develop 主题演讲中,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 上的一些惊人数字,所以我忍不住要发布它们。Spring 2.0 在最初的 24 小时内下载量超过 10,000 次!对 Spring 2.0 的兴趣已经持续了数月——一些用户已经在使用发布候选版进行生产,其中包括欧洲一家著名的媒体网站——我认为Keith 精彩的发布页面

Spring 2.0 Maven POMs 已就绪

工程 | Ben Hale | 2006 年 10 月 04 日 | ...

在今天众多 Spring 2.0 公告中,这是最后一个。Spring 2.0 的 Maven POM 已上传到 Spring 的私有仓库。如果你想直接指向它,请查看https://svn.sourceforge.net/svnroot/springframework/repos/repo/。如果你想等待,它们应该会在接下来的几天内复制到 Ibiblio Maven 仓库。

对于那些喜欢浏览更多元数据的人来说,SourceForge 的ViewVC 接口是一个不错的选择。请记住,你应该使用前一个链接作为 maven 的 URL,但你可以使用后一个链接进行浏览。


更新于 10/3 22:03:添加了关于 ViewVC 的段落

利用泛型元数据

工程 | Rob Harrop | 2006 年 09 月 29 日 | ...

我在与客户交谈时经常听到一个常见的误解,即所有关于泛型类型的信息都从 Java 类文件中被擦除。这完全是错误的。所有静态泛型信息都会被保留,只有关于单个实例的泛型信息才会被擦除。所以如果我有一个类 Foo 实现了 List<String>,那么我可以在运行时确定 Foo 实现了由 String 参数化的 List 接口。然而,如果我在运行时实例化一个 ArrayList<String> 的实例,我不能获取该实例并确定其具体类型参数(我只能确定 ArrayList 需要类型参数)。在这篇文章中,我将向你展示一些可用的泛型元数据的实际用法,它简化了根据处理对象类型而不同的策略接口和实现的创建。

我在许多应用程序中看到的一种模式是使用某种策略接口,其具体实现分别处理特定的输入类型。例如,考虑投资银行业务中的一个简单场景。任何上市公司都可以发布公司行为,从而导致其股票发生实际变化。一个主要例子是股息支付,它按每股向所有股东支付一定数量的现金、股票或财产。在投资银行内部,接收这些事件的通知并计算由此产生的权益非常重要,以便使交易账簿与正确的股票和现金价值保持同步。

作为一个具体示例,考虑 BigBank 持有 1,200,000 股 IBM 股票。IBM 决定派发每股 0.02 美元的股息。因此,BigBank 需要接收股息行动的通知,并在适当的时间更新其交易账簿,以反映额外的 24,000 美元可用现金。

权益的计算将根据执行的公司行动类型而有很大差异。例如,合并很可能导致一家公司的股票损失和另一家公司的股票增加。

如果我们考虑这在 Java 应用程序中可能是什么样子,我们可以假设会看到类似(大大简化)的示例


public class CorporateActionEventProcessor {

    public void onCorporateActionEvent(CorporateActionEvent event) {
        // do we have any stock for this security?

        // if so calculate our entitlements
    }
}

关于事件的通知可能通过多种机制从外部方传入,然后发送到这个 CorporateActionEventProcessor 类。CorporateActionEvent 接口可能通过许多具体类实现


public class DividendCorporateActionEvent implements CorporateActionEvent {

    private PayoutType payoutType;
    private BigDecimal ratioPerShare;

    // ...
}

public class MergerCorporateActionEvent implements CorporateActionEvent {

    private String currentIsin; // security we currently hold
    private String newIsin; // security we get
    private BigDecimal…

波士顿 Spring 小组首次会议

工程 | Mark Fisher | 2006 年 09 月 25 日 | ...

我非常激动地宣布,新英格兰 Java 用户组 (New England Java Users Group) 内的 Spring SIG 将于本周四(2006 年 9 月 28 日)举行首次会议。Ramnivas Laddad(《AspectJ in Action》作者和 Interface21 首席工程师)将发表题为“AspectJ for Spring Developers”的演讲。这将是了解 Spring 2.0 中 AspectJ 集成增强功能的好机会。

你可以在此处阅读详细信息,如果你打算参加,请务必点击页面左侧的“注册”链接。

这个小组将为“所有与 Spring 相关的事物”提供一个很棒的论坛,最初大约每季度开会一次。我期待着建立一个社区,并亲自会见波士顿地区的 Spring 用户。

特别感谢 NEJUG 主席 Steven Maienza 和 NEJUG 成员,他们表达了组建 Spring 小组的兴趣,并在我搬到波士顿之前就将其付诸实施。谢谢!

获取 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

领先一步

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

了解更多

获得支持

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件,只需一份简单的订阅。

了解更多

即将举行的活动

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

查看所有