Spring 2.1-m2 中的基础设施变更

工程 | Ben Hale | 2007年6月1日 | ...

随着 Spring 2.1-m2 的发布,Spring 发行版的基础设施发生了一些重大变化。请参阅公告变更日志以获取完整的变更列表。

发行版

发行版已从 2.1-m1 的 26 个 JAR 缩减到 2.1-m2 的 17 个 JAR。查看变更日志以获取已更改文件的列表,但从提交消息来看,以下是新增内容:
  • spring-context.jar 包含 JMX 支持和核心远程处理支持(不再有 spring-jmx 和 spring-remoting jar)
  • spring-orm.jar 结合了所有 ORM 支持包(取代了 spring-hibernate, spring-ibatis, spring-jdo, spring-jpa 和 spring-toplink jar)
  • spring-web.jar 包含与 Web 相关的远程处理和 ORM 类(以便在 J2EE EAR 部署结构中正确使用)
  • 将 spring-dao.jar 重命名为 spring-tx.jar,现在也包含 JCA 支持
  • 将 spring-support.jar 重命名为 spring-context-support.jar
  • 将 spring-portlet.jar 重命名为 spring-webmvc-portlet.jar
  • 模块 jar 文件现在包含模块特定的 "spring.handlers" 和 "spring.schemas" 文件

Maven 工件

我也很高兴地宣布,从 2.1-m2 版本开始,每个 Spring 模块现在都将在 Maven 仓库中包含源 JAR。2.1-m2 Maven 工件目前位于一个私有快照仓库中,但最终版本将位于主 Maven 仓库中。如果您想在 Maven 项目中开始使用 2.1-m2,请在您的 POM 中添加一个指向 https://springframework.svn.sourceforge.net/svnroot/springframework/repos/repo-snapshots/ 的仓库位置。如果您正在使用任何 Maven IDE 支持,请同时下载源 JAR 并在我们的 JIRA 上报告任何相关问题。

在 Spring 2.1 中自定义注解配置和组件检测

工程 | Mark Fisher | 2007年5月29日 | ...

注意:此帖子已于 2007 年 5 月 31 日更新,以反映 2.1-M2 官方发布的状态

两周前我撰写博客介绍了 Spring 2.1 新的注解驱动依赖注入功能,并提到我将在“本周晚些时候”提供更多信息。事实证明这有点乐观,但好消息是此功能在此期间已经发展了很多。因此,要跟随这里的示例,您需要下载2.1-M2 官方版本(或者如果您是第一批阅读此更新条目且 M2 尚未发布的人,您应该至少获取 nightly build #115,您可以在此处下载)。

我想演示的第一件事是如何不使用任何 XML 创建应用程序上下文。对于那些使用过 Spring 的 BeanDefinitionReader 实现的人来说,这会非常熟悉。然而,在创建上下文之前,我们需要在类路径上准备一些“候选”bean。继续我之前博客中的示例,我有以下两个接口:


public interface GreetingService {
	String greet(String name);
}

public interface MessageRepository {
	String getMessage(String language);
}

……以及这些对应的实现


@Component
public class GreetingServiceImpl implements GreetingService {

	@Autowired
	private MessageRepository messageRepository;
	
	public String greet(String name) {
		Locale locale = Locale.getDefault();
		if (messageRepository == null) {
			return "Sorry, no messages";
		}
		String message = messageRepository.getMessage(locale.getDisplayLanguage());
		return message + " " + name;
	}
}

@Repository…

会议季高潮迭起,直奔 SpringOne!

工程 | Rod Johnson | 2007年5月28日 | ...

好久没有时间写博客了。我们一直很忙。我们筹集了 1000 万美元。正如Adrian 所指出的那样,我们一直非常积极地进行产品开发。过去几个月我自己编写的代码比往常更多。(主要是实验性的东西,可能见光,也可能不见光,但很有趣,有时我做的事情最终被证明是有用的。)我花了很多时间与媒体和分析师交谈;我们最近获得了巨大的媒体关注。媒体/分析师电话会议可能很累人,但也很有价值,因为这些人中很多人都很聪明,会提出发人深省的问题……

Spring 产品组合中的新版本

工程 | Adrian Colyer | 2007年5月25日 | ...

去年年底,我们开始讨论 Spring“发布列车”的概念。发布列车背后的想法是,我们协调发布 Spring 产品组合中的产品:经过共同测试并协同工作。您仍然可以挑选您需要的组件,但当您想一起使用各种产品时,会更容易。我们还没有完全实现,但我们正在路上。

我们 Interface21 的一个难题是,对我们支持服务、培训和咨询的需求如此之高,以至于我们一直在全力以赴地努力满足这些需求。这使得我们很难获得一致且可预测的产品开发时间,以实现像发布列车这样的事情。这只是我如此兴奋于最近宣布 Benchmark Capital 对 Interface21 投资 1000 万美元(新闻稿…)的众多原因之一。

Spring Web Flow Java One 2007 演示

工程 | Keith Donald | 2007年5月18日 | ...

当 Sun 将我关于Spring Web Flow的 JavaOne 2007 研讨会安排在周五,也就是大会的最后一天时,我不知道会发生什么。我很荣幸今年再次被接受,但我在想在为期四天的大会最后一天进行演示时,会有多少人出席。

我对事情的进展感到非常满意。周四我在演讲者设置处报到时,已有 800 人预注册了我的周五研讨会。在我的演讲开始前十五分钟,房间已达到这个人数。最终,1000 名 JavaOne 参会者来到了 307-310 号房间……

Spring 2.1 中注解驱动的依赖注入

工程 | Mark Fisher | 2007年5月14日 | ...

Spring 2.0 引入了注解支持和注解感知配置选项,可供使用 Java 5(或更高版本)的 Spring 用户利用

@Transactional 用于标记和配置事务定义
@Aspect (AspectJ) 用于定义切面,以及 @Pointcut 定义和通知(@Before、@After、@Around)
@Repository 用于指示充当仓库(也称为数据访问对象或 DAO)的类
@Required 用于强制为带注解的 bean 属性提供值

通过 Spring 2.1,这种注解驱动配置的主题得到了显著扩展,并将在我们迈向 RC1 版本时继续发展。事实上,现在可以通过注解驱动 Spring 的依赖注入。此外,Spring 可以*发现*需要在应用程序上下文中配置的 bean。

这篇博文将作为分 10 个易于遵循的步骤的教程式介绍,介绍基本功能。我将在本周晚些时候提供有关一些更高级功能和自定义选项的信息。如果您对其他配置选项感兴趣,还应该查看 Spring Java Configuration 项目和这篇博客

本教程至少需要 Java 5,建议使用 Java 6(否则在步骤 1 结束时有一个单一要求)。

步骤 1

获取 spring-framework-2.1-m1-with-dependencies.zip。解压缩存档后,您将在“dist”目录中找到 spring.jar 和 spring-mock.jar。将它们添加到您的 CLASSPATH 中,以及以下内容(所示路径相对于解压缩的 2.1-m1 存档的“lib”目录)

  • asm/asm-2.2.3.jar
  • asm/asm-commons-2.2.3.jar
  • aspectj/aspectjweaver.jar
  • hsqldb/hsqldb.jar
  • jakarta-commons/commons-logging.jar
  • log4j/log4j-1.2.14.jar
(注意:如果您没有运行 Java 6,您还需要添加 j2ee/common-annotations.jar)

步骤 2

提供示例的接口和类。我已尽量使其尽可能简单,但又能演示主要功能。我将所有代码和配置都包含在一个“blog”包中。我建议遵循相同的指导原则,以便示例按原样工作;否则,请务必进行必要的修改。首先是 *GreetingService* 接口

public interface GreetingService {
    String greet(String name);
}

然后,一个简单的实现


public class GreetingServiceImpl implements GreetingService {
    private MessageRepository messageRepository;

    public void setMessageRepository(MessageRepository messageRepository) {
        this.messageRepository = messageRepository;
    }

    public String greet(String name) {
        Locale locale = Locale.getDefault();
        String message = messageRepository.getMessage(locale.getDisplayLanguage());
        return message + " " + name;
    }
}

由于服务依赖于 *MessageRepository*,请定义……

Spring Web Flow Bean 作用域和 JSF

工程 | Ben Hale | 2007年5月8日 | ...

我最近完成了 Spring Web Flow 中的一个有趣问题。这个问题(SWF-163)涉及到为 Spring Web Flow 的内部作用域添加 Spring 2.0 bean 作用域支持。实现本身并不是那么有趣(毕竟 Scope 接口相当容易实现),但我想提一下你如何在你的应用程序中使用类似这样的东西。

Spring 2.0 作用域

在 Spring 1.x 中,我们有单例和原型 bean 作用域的概念,但表示法是固定的,并且用 singleton="[true | false]" 来描述并不是特别清晰。因此在 Spring 2.0 中,这种表示法从 XSD 样式的配置中移除,现在您看到的是更清晰的表示法 scope="[singleton | prototype | ...]"。Spring 本身增加了三个更多的 bean 作用域;requestsessionglobalSession,它们与 Web 应用程序相关。

通过 Spring Web Flow 1.1 的最新快照,我们现在看到了三个主要的 Web Flow 作用域的 bean 作用域:flashflowconversation


<bean id="sale" class="org.springframework.webflow.samples.sellitem.Sale…

Spring Batch

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

介绍

我一直在与几位客户努力开发一款名为 Spring Batch 的新产品。其目标是提供工具和应用程序,以支持企业环境中的批量处理。Spring Batch 是 Spring Portfolio 的一部分,其初始版本将在 Spring 2.1 发布列车中发布。

构建一些原型代码的最初动力实际上是独立地来自 Interface21 的许多客户。这提供了有用的额外细节和对实现的一些约束,以便它可以应用于客户提出的实际问题。我希望这篇文章……

强大组合:SCA、OSGi 和 Spring

工程 | Adrian Colyer | 2007年5月1日 | ...

不,这不是我的标题,它实际上是 开放 SOA 协作组织 最近发布的一份白皮书的标题。引用白皮书随附的新闻公告:

“根据用户反馈,OSOA 协作组织正在发布一份白皮书,重点介绍 SCA、Spring 和 OSGi 技术的强大组合,旨在帮助开发人员简化服务的创建和组合,这对于构建基于 SOA 方法的应用程序至关重要。”
开放 SOA 协作组织开发服务协作架构(SCA)规范,其合作伙伴包括 BEA、IBM、IONA、Oracle、Red Hat、SAP、Siemens、Sun、Tibco 等。因此,当这个团体开始围绕“SCA、Spring 和 OSGi 的强大组合”凝聚时,这是对 Spring 框架以及我们在 Spring OSGi 项目中所做工作的巨大认可。

这篇白皮书简要概述了 SCA、OSGi 和 Spring,然后描述了它们如何协同使用。引用摘要:

“SCA、OSGi 和 Spring 都是 Java 程序员可使用的有用且强大的工具。在我们正在进入的新的面向服务世界中,将 SCA、OSGi 和 Spring 结合使用,为使用少量 API、具有托管依赖项、版本控制和动态更新功能的简单 Java Bean 集构建服务实现提供了强大的功能,并能够将这些实现与其他用 Java 或其他语言编写并存在于使用各种通信方法的分布式系统网络中的服务组件进行组合。

简单性、灵活性、可管理性、可测试性、可重用性。这是企业开发人员的关键组合。”

下周我将在 JavaOne 大会上与 IBM 的 Mike Edwards 共同展示 SCA 和 Spring:TS-8194 议程,“Spring 和服务组件架构……”

从 Amazon S3 查询和下载

工程 | Ben Hale | 2007年4月30日 | ...

上一篇文章中,我描述了我们如何使用自定义 ANT 任务从 Spring 产品组合中基于 ANT 的项目上传每日快照。在这篇文章中,我将描述我们如何使用 Amazon S3 为每个项目的快照生成页面并允许用户下载快照。

正如我在上一篇文章中提到的,S3 主要用作 RESTful 服务。这意味着虽然我使用 Java 进行上传部分,但我可以自由地使用其他语言进行下载部分。在这种情况下,我选择使用 PHP,因为它已经在我正在使用的服务器上可用,并且是……

获取 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

领先一步

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

了解更多

获得支持

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

了解更多

即将举行的活动

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

查看所有