Spring 2.1 中注解驱动的依赖注入
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
步骤 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 LDAP 1.2 RC1 发布
亲爱的 Spring 社区:
我们很高兴地宣布 Spring LDAP 1.2 的第一个发布候选版本,它包含许多新功能和错误修复。此处仅列出最重要的部分。有关完整列表,请参阅更新日志。该版本可在此处下载。
- 实现了 Spring LDAP 的客户端事务支持。有关详细信息,请参阅参考文档 (LDAP-29)。
- 将异常层次结构更改为 JNDI NamingException 层次结构的未检查镜像 (LDAP-4)。
- Spring LDAP 抛出的异常现在始终是可序列化的,无论包装的 NamingException 是否可序列化(不总是这样) (LDAP-14)。
- 重写了 LdapEncoder.nameDecode() 以解决国家字符问题,并删除了解析中使用的正则表达式,额外地大幅提高了专有名称解析性能 (LDAP-30)。
- 内部升级到 Spring 2.0.4。Spring 1.2.x 仍受支持 (LDAP-35, LDAP-51)。
请注意,此版本中进行了许多 API 破坏性更改,主要是包重组方面。因此,这不是 Spring LDAP 1.1.2 的直接替代品,尽管升级工作量应该不大。有关详细信息,请参阅随附的升级指南。
Spring LDAP 团队
Spring Framework 2.0.5 发布
Spring Web Flow Bean 作用域和 JSF
我最近完成了 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 作用域;request、session 和 globalSession,它们与 Web 应用程序相关。通过 Spring Web Flow 1.1 的最新快照,我们现在看到了三个主要的 Web Flow 作用域的 bean 作用域:flash、flow 和 conversation。
<bean id="sale" class="org.springframework.webflow.samples.sellitem.Sale…Spring Batch
介绍
我一直在与几位客户努力开发一款名为 Spring Batch 的新产品。其目标是提供工具和应用程序,以支持企业环境中的批量处理。Spring Batch 是 Spring Portfolio 的一部分,其初始版本将在 Spring 2.1 发布列车中发布。
最初,一些Interface21的客户独立地产生了构建一些原型代码的冲动。这提供了一些有用的附加细节和一些关于实现的限制,以便它可以应用于客户提出的实际问题。我希望这篇文章…
强大组合:SCA、OSGi 和 Spring
不,这不是我的标题,它实际上是 开放 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和Service Component Architecture…”简单性、灵活性、可管理性、可测试性、可重用性。这是企业开发人员的关键组合。”
从 Amazon S3 查询和下载
在上一篇文章中,我描述了我们如何使用自定义 ANT 任务从 Spring 产品组合中基于 ANT 的项目上传每日快照。在这篇文章中,我将描述我们如何使用 Amazon S3 为每个项目的快照生成页面并允许用户下载快照。
正如我在上一篇文章中提到的,S3主要用作RESTful服务。这意味着虽然我在上传部分使用了Java,但在下载部分可以使用其他语言。在这种情况下,我选择使用PHP,因为它已经在我工作的服务器上可用,并且是…
使用自定义ANT任务上传到Amazon S3
一个稳固的持续集成(CI)结构带来一个有趣的副作用,那就是当一切运行可靠时,新的问题就会开始出现。在Spring的CI系统顺利运行后不久,我们在static.springframework.org上偶尔出现的空间和带宽问题变得更加突出。Colin Sampaleanu早些时候研究了如何缓解这些问题,并决定使用Amazon S3。
Amazon S3是Amazon Web Services伞下的一部分,并提供了一种极其廉价的在线文件存储服务。 “极其廉价”是什么意思?嗯,从网站上看,似乎…
Spring的精髓
上周我在亚特兰大的一家Barnes & Noble书店里发生了这件事。我绕到电脑区,开始浏览书名。我头微倾,无意中听到一段关于工作机会的对话。我没有主动去听,但我知道一方在推销工作,另一方在询问。
几分钟后,只剩下我和那个寻找人才的人。我确定他会开口。不久之后,他说:“所以你在J2EE?”于是谈话开始了。他问我关于我的工作。他不知道Interface21,但听到它是公司…

