Spring Framework Maven 工件

工程 | Ben Hale | 2007年11月26日 | ...

大众需求,Spring Framework Maven 工件现在已上传到 Spring Snapshot Maven 仓库。您可以在我的上一篇文章中找到所有 Spring 产品组合 Maven 仓库的详细信息,但我将在此处重印 Spring Snapshot 仓库的详细信息。

Spring Snapshot Maven 仓库位于http://s3.amazonaws.com/maven.springframework.org/snapshot。使用此仓库需要您在 POM 文件中的<repositories/> 元素中添加一个条目。它应该如下所示


<repository>
    <id>spring-snapshot</id>
    <name>Spring Portfolio Snapshot…

Interface21 更名为 SpringSource

工程 | Rod Johnson | 2007年11月19日 | ...

我们正在更改我们的名称。本周,Interface21 将更名为 SpringSource。

在公司发展的过程中,Interface21 因其卓越的产品、思想领导力、杰出的人才、专业精神以及优质的支持和服务而享有盛誉。在我们继续提供所有这些方面时,我们相信更改公司名称将有助于公司将其推广给更广泛的受众。

当我于 2004 年创立 Interface21 时,我必须选择一个名称。“Interface21”反映了我的想法——21 世纪的框架,我相信 Spring 将成为企业 Java 的未来。现在我们……

Spring Framework 2.5 发布

发布 | Juergen Hoeller | 2007年11月19日 | ...

尊敬的 Spring 社区:
 
我们很高兴地宣布 Spring Framework 2.5 正式版现已发布。

Spring 2.5 RC1 Released

下载 | 支持 | 文档 | 变更日志 

Spring 2.5 在 Spring 2.0 的基础上增加了许多令人兴奋的新功能,包括:

  • 完全支持 Java 6 和 Java EE 5 (JDBC 4.0、JTA 1.1、JavaMail 1.4、JAX-WS 2.0)
  • 功能齐全的基于注解的依赖注入,包括对“限定符”的支持
  • 支持自动检测类路径中的应用程序组件并将其自动配置为 Spring 管理的对象
  • AspectJ 切入点表达式中新的 bean 名称切入点元素
  • 基于 LoadTimeWeaver 抽象的 AspectJ 加载时编织的内置支持
  • 新的 XML 配置命名空间“context”和“jms”,以实现最大的便利性
  • 完全改进的集成测试框架,对 JUnit 4 和 TestNG 提供一流的支持
  • Spring MVC 的新的基于注解的控制器模型,支持 Servlet 和 Portlet 环境
  • 扩展的 SimpleJdbcTemplate 功能,包括对命名 SQL 参数的支持
  • 正式认证的 WebSphere 支持
  • 开箱即用的 Spring Framework jar 包作为 OSGi 兼容的捆绑包
  • 能够将 Spring ApplicationContext 部署为 JCA RAR 文件,用于无头应用程序模块
  • JCA 1.5 消息端点管理,用于 Spring 管理的 JMS 和 CCI 消息侦听器

查看系列文章Spring 2.5 的新功能?,了解 Spring 2.5 的新功能,包括如何部署演示这些功能的 Spring 示例应用程序的信息。

我们建议从所有以前的 Spring 2.0.x 版本升级到 Spring 2.5,以受益于新功能以及 Spring 2.5 提供的显著性能增强。Spring 2.5 旨在作为 Spring 2.0 的直接替代品,除了略微重构的 jar 文件内容外(请参阅发行版中的自述文件以了解有关此方面的更多信息)。

请注意,Spring 2.5 仍然与 JDK 1.4.2+ 和 J2EE 1.3+ 兼容。例如在 WebLogic 8.1 或 WebSphere 5.1/6.0 上的 Java 1.4 用户也欢迎升级到 Spring 2.5。我们建议在 Java 1.4 上运行时将 backport-util-concurrent jar 放入类路径中,这允许 Spring 和您的应用程序受益于显著的并发增强。

享受 Spring 2.5!

Juergen Hoeller
Spring Framework 开发主管

Spring Web Flow 2.0 愿景

工程 | Keith Donald | 2007年11月15日 | ...

Spring Web Flow 2.0 M2 刚刚发布。我对这个版本特别兴奋,因为它奠定了我们为社区未来实现大胆愿景所需的基础。在本篇文章中,我将解释这个愿景是什么,以及这个基础将实现什么。我还将详细介绍 Web Flow 2.0 的架构,并将其与 1.0 版本进行比较。

Spring Web Flow 2.0 愿景

2.0 的目标是将 Spring Web Flow 发展成为一个受控的导航引擎,以提供对 JavaServerFaces、流管理持久性和异步事件处理(Ajax)的原生支持。新的 Spring Faces 项目将基于 Web Flow 2.0,以便在 Spring 环境中为 JSF 视图提供一流的支持。此外,Web Flow 将继续为基于 Spring MVC 的视图提供一流的支持,允许原生 JSF 和 MVC 视图充分发挥其功能,如果需要,甚至可以在同一个应用程序中使用。

* 更新:在 2007 年 Spring 体验之后,根据 Spring 社区的众多反馈,上述愿景于 2008 年 1 月 11 日进行了更新。基于这些反馈,Spring Web Flow 2……

Spring 2.5 中的带注解的 Web MVC 控制器

工程 | Juergen Hoeller | 2007年11月14日 | ...

Spring 2.5 引入了一种编写带注解的 Web MVC 控制器的方法,我们还没有对此进行过多的博客报道……我将借此机会向您概述当今 Spring MVC 的真正含义。

Spring MVC 本质上是一个请求分派器框架,具有 Servlet API 变体和 Portlet API 变体。它在其托管环境(Servlet 或 Portlet)中非常紧密地运行。将 Spring MVC 视为在 Servlet/Portlet 容器之上提供基础设施和便利性:例如灵活的请求映射、控制器之间的分离……

对《EJB 3 和 Spring 比较分析》的回应

工程 | Mark Fisher | 2007年11月09日 | ...

昨晚我参加了新英格兰 Java 用户组(NEJUG)会议,Reza Rahman 在会上介绍了EJB 3 和 Spring 的“比较分析”。Reza 是《EJB 3 in Action》的作者之一。我很高兴认识 Reza,并尊重他提出的这个可能被认为是有争议的话题。我还感谢他尝试解决 EJB 3 和 Spring 的优缺点。然而,我觉得有必要澄清一些在他对 Spring 的报道中并不完全准确的几点,这些点让我(和其他与会者)相信这次演示是由对 EJB 3 的偏见驱动的。公平地说,与固定的规范版本不同,Spring 不断发展,我在这里指出的某些内容是新功能。另一方面,有些是 Spring 2.0 功能,已经可用了一年以上。我个人认为,“比较分析”必须考虑被比较产品的最新稳定版本的最新功能集。我认为,我不免也会有些偏见,但这篇文章的目的是提供一个完全客观的回应,以便可以修改演示文稿以反映更“苹果对苹果”的比较。我将对演示文稿的 10 个“主题”做出简短回应。

1. EJB 使用注解作为元数据。Spring 使用 XML。

有人提到 Spring 正在开始支持更多注解,但这“需要一段时间”。但是,Spring 2.0 版本通过 @PersistenceContext 提供了与 JPA 的完全集成,用于注入 EntityManager,并通过 Spring 的 @Transactional 注解提供基于注解的事务管理(支持与具有 REQUIRED 默认传播的 @Stateless EJB 相同的语义)。我特别沮丧的是,比较没有同时包含 JPA(参见下面的第 3 点)。Spring 2.0 还引入了基于注解的 AspectJ 支持(@Aspect、@Before、@After、@Around)和“原型”注解的概念。例如,@Repository 注解可以对直接使用 JPA 或 Hibernate API(无需 Spring 的模板)的数据访问代码进行非侵入式异常转换。Spring 甚至早在 1.2 版本就提供了注解支持,例如 @ManagedResource,用于将任何 Spring 管理的对象透明地导出为 JMX MBean。

现在,这个问题成为我的首要问题的主要原因是,有人评论说这“需要一段时间”。作为 Spring 2.5 基于注解的配置支持的主要开发人员之一,我必须说 Spring 元数据模型非常灵活,因此我们能够比人们预期更快地提供全面的基于注解的模型。事实上,Spring 2.5 支持 JSR-250 注解:@Resource、@PostConstruct 和 @PreDestroy - 以及 @WebServiceRef 和 @EJB。@Resource 特别令人关注,因为它是 EJB 3 中用于依赖注入的主要注解。在 Spring 中,@Resource 注解不仅支持 JNDI 查询(与 EJB 3 一样),还支持注入_任何 Spring 管理的对象_。这有效地结合了本演示文稿中提到的主要 Spring 优势(Spring 支持任何类型的对象的 DI)和主要 EJB 3 优势(使用注解而不是 XML)。Spring 2.5 还引入了基于 @Autowired 和(可扩展的)@Qualifier 注解的更细粒度的基于注解的依赖注入模型。Spring 2.5 还扩展了“原型”注解以包含 @Service 和 @Controller。每个原型注解都通过将其用作元注解来扩展泛型 @Component 注解。通过应用相同的技术,@Component 注解为用户定义的原型提供了扩展点。Spring 甚至可以自动检测这些带注解的组件作为 XML 配置的替代方案。例如,这段摘录取自 2.5 版本的 PetClinic 示例应用程序


   <context:component-scan base-package="org.springframework.samples.petclinic.web" />

由于 web 控制器使用基于注解的依赖注入和请求映射的注解,因此_不需要_额外的 XML。我指出这一点,是因为演示文稿特别强调了 web 层配置的冗长性。


@Controller
public class ClinicController {

   private final Clinic clinic;

   @Autowired
   public ClinicController(Clinic clinic) {
      this.clinic = clinic;
   }
   ...

有关 Spring 注解支持的最新内容,请参阅:The Server Side 上的 Spring 2.5 简介,或 Spring 最新版本的参考手册 - 特别是基于注解的配置部分。此外,请继续关注此博客和Spring Framework 首页,了解即将发布的一些文章和博客,涵盖 2.5 版本。

2. Spring 允许您支持多个部署环境,但需要更多配置。

这个实际上被呈现为Spring的一个优势,但强调了配置开销。事实是,任何认真对待测试和敏捷开发的项目都需要支持“多个部署环境”。换句话说,这个特定主题经常被曲解,好像它只适用于多个*生产*环境。实际上,在每个开发和测试周期中都必须部署到应用服务器是敏捷性的一大障碍。通常,Spring用户会模块化他们的配置,以便“基础设施”配置(例如DataSource、TransactionManager、JMS ConnectionFactory)是分离的,动态属性是外部化的。由于Spring支持根据外部化属性替换'${占位符}',因此包含不同的属性文件通常成为一个透明的问题。

3. 使用JPA的EJB,使用Hibernate的Spring

我必须承认,这一个最让我困扰。在比较幻灯片中,EJB 3示例显示了通过entityManager进行数据访问的JPA,以及使用@PersistenceContext注解提供的entityManager实例。另一方面,Spring示例使用了Hibernate,并显示了Hibernate SessionFactory的setter注入。在我看来,这违反了真正的“比较分析”的第一条规则:使用双方比较中最相似的功能。在这种特定情况下,Spring确实提供了直接使用JPA API的支持(即JpaTemplate是完全可选的;'entityManager'的直接使用仍然参与Spring事务等),并且Spring也识别@PersistenceContext注解。这项支持自Spring 2.0(最终版本已超过一年)以来就已可用,所以我不知道为什么比较不也在Spring方面使用JPA。比较的其他部分显然是基于Spring 2.0的,因此这给人留下了选择性过时和显示偏差的印象。如果将此特定示例修改为“苹果对苹果”的比较,它将破坏其中一个主要的总体主题:Spring需要更多配置,而EJB 3依赖于标准注解。

现在,即使我相信在Spring方面使用Hibernate而不是JPA扭曲了比较,但它也同时揭示了Spring的一个优势。如果您确实想直接使用Hibernate API而不是依赖JPA API,Spring允许这样做,并且它在Spring事务管理和异常转换方面以一致的方式这样做。然后,这打开了使用超出JPA限制的Hibernate功能的机会,例如Hibernate的“criteria”查询API。同样,如果您想添加一些直接的JDBC进行数据访问,而ORM过于复杂,Spring也支持这样做——即使是在与Hibernate或JPA数据访问相同的交易中调用时。

4. Spring不作任何假设,您必须提供配置。

一个具体的例子是事务管理器的定义。有人说,您必须了解容器供应商级别的内容才能配置Spring集成。这是不正确的。例如,以下bean定义不包含任何特定于容器的信息,但Spring将在所有Java EE应用服务器中自动检测事务管理器


   <bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"/>

如果您确实想要利用特定于容器的功能,例如每个事务的隔离级别,那么Spring还提供了一些专门的实现:WebLogicJtaTransactionManagerWebSphereUowTransactionManagerOC4JJtaTransactionManager。在这些实现之间切换只是更改此单个定义的问题。

除此之外,Spring配置幻灯片不必要地冗长。恐怕这可能也源于强调EJB*与Spring不同*依赖于智能默认值的愿望。例如,幻灯片显示了


   <tx:annotation-driven transaction-manager="transactionManager"/>

实际上,如果在Spring上下文中定义了单个'transactionManager',则不需要在'annotation-driven'元素上显式提供该属性。该属性仅用于在*必要时*在一个应用程序中启用多个事务管理器的使用。这些“自动检测”和“智能默认值”技术应用于整个Spring,例如消息侦听器的JMS 'connectionFactory'(这在下面#6的示例中是隐含的)以及现有MBean服务器或RMI注册表的自动定位。

从积极的方面来看,它实际上被提及为一个优势,即Spring允许进行“本地”事务管理。虽然EJB需要JTA进行事务管理,但许多应用程序不需要跨支持两阶段提交资源的分布式事务。在这种情况下,Spring允许使用更简单的、开销更少的事务管理器:DataSourceTransactionManager(用于JDBC)、HibernateTransactionManager或JpaTransactionManager。如果目标是准确描述优缺点,我希望听到更多关于Spring这一特定优势的细节。例如,这对于在容器外部进行测试或在轻量级IDE环境(如Eclipse或IDEA)中进行开发来说是一个巨大的好处。

此外,如果您确实需要JTA进行分布式事务,但希望在像Tomcat或Jetty这样的轻量级容器中运行,Spring很容易支持独立的JTA提供程序,如Atomikos和JOTM。当然,Spring的事务管理器设置需要配置一个单个bean定义,但这确实是一次性成本——并且非常值得。

5. Spring没有状态化应用程序范例。

无状态服务层的优势作为最佳实践已被广泛认可,Spring也采用了这种方法。然而,Spring确实提供了单例之外的其他作用域。Spring的“原型”作用域为每次注入或查找启用一个不同的实例,而Spring 2.0引入了web作用域:“请求”和“会话”。作用域机制本身也是可扩展的;可以将自定义作用域定义和映射到会话的概念。Spring还支持使用CommonsPoolTargetSource进行简单的对象池化,但是对象池化很少是状态管理的最佳解决方案。

更重要的是,Spring通过Spring Web Flow为web应用程序提供了非常强大、高度可配置的状态管理。与本演示文稿声称的开发人员必须直接与HTTP会话交互以管理Spring应用程序中的状态相反,这里的会话状态是透明管理的。此外,存储库配置是可插拔的,因此可以使用各种策略来物理存储状态(会话、客户端、后端缓存等)。最后,Spring Web Flow的最新开发包括对扩展持久上下文和与JSF完全集成的支持。

6. Spring需要为每个MessageListener配置一个容器。

Spring 2.5提供了一个新的'jms'命名空间,以大大简化消息侦听器的配置。请注意,每个侦听器没有单独的容器配置。多个侦听器共享配置,并广泛使用智能默认值。


<jms:listener-container>
	<jms:listener destination="queue.confirm" ref="logger" method="log"/>
	<jms:listener destination="queue.order…

下载“生产环境中的Spring”白皮书

工程 | Adrian Colyer | 2007年11月09日 | ...

我们最近举办了一个关于“生产环境中的Spring”主题的网络研讨会。我当时承诺将网络研讨会的录音和随附的幻灯片在我们网站上提供。不幸的是,为我们制作网络研讨会的工程师忘记设置“记录”标志,所以我需要为您重新录制会议:(。我现在正在旅行,但我将尽力做到这一点,并在尽快提供。

好消息是,您无需错过这段时间。我撰写了一篇关于“生产环境中的Spring”主题的白皮书,其中涵盖了网络研讨会中的内容以及更多内容……

Spring Java配置展望未来

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

一些用户询问我们是否致力于Spring Java配置,以及它与Spring 2.5中引入的注解配置选项的关系。答案是肯定的,我们致力于Java配置;这两种方法并不相互排斥。

这两种配置方法完全不同:Spring框架中的@Autowired注解使用业务对象中的注解来配置组件,而Spring Java配置采用了一种独特的方法,即将注解外部化到专用配置类中。这两种方法都没有绝对正确……

Spring LDAP 1.2发布

发布 | Mattias Arthursson | 2007年10月31日 | ...

尊敬的 Spring 社区:

我们很高兴地宣布发布Spring LDAP 1.2版本。这是一个主要版本,引入了许多功能和错误修复。

            下载 | 变更日志 | 文档 (HTML) | 文档 (PDF) | API

一些重要更改的摘要

  • 现在使用SimpleLdapTemplate和ParameterizedContextMapper类提供Java 5泛型支持。
  • 客户端LDAP事务。
  • 一些额外的API方法,简化了许多常见任务。

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

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

除此之外,Spring LDAP还提供了从NamingExceptions到镜像的未检查异常层次结构的异常转换,以及用于处理过滤器、LDAP路径和属性的几个实用程序。

Spring-LDAP需要J2SE 1.4才能运行。构建发行版二进制文件需要J2SE 1.4和javacc。运行示例需要J2EE 1.4(Servlet 2.3,JSP 1.2)。

从哪里开始
从上面的链接下载发行版。发行版包含广泛的JavaDoc文档以及完整的参考文档和一个示例应用程序,演示了使用Spring LDAP的不同方法。

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

Mattias Arthursson & Ulrik Sandberg,Spring LDAP项目团队

Spring 2.5 RC1 发布 - 引入新的配置方法

工程 | Juergen Hoeller | 2007年10月24日 | ...

正如一些人已经注意到的那样,Spring 2.5 RC1 最终在周一发布,等待您试用!Spring 2.5 在许多方面都是完成 Spring 2.0 任务的版本:为 Java 1.4 和 Java 5 提供最灵活、最全面的配置模型。Spring 2.5 特别关注对 Java 5 的全面支持,引入了各种额外的注解选项。我想借此机会指出此版本背后的统一主题。

Spring 2.5 允许进行方便的外部化配置,同时保持尽可能简洁。这是基于 Spring 2.0 对 XML 模式命名空间的支持,Spring 2.5 引入了新的“context”和“jms”配置命名空间。“jms”命名空间是一个很好的例子,它展示了 Spring 配置命名空间可以提供的附加值——如果您正在使用 Spring 2.0 风格的消息驱动对象,绝对值得采用!此外,Spring 还允许进行无需 XML 的程序引导……

订阅 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

领先一步

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

了解更多

获取支持

Tanzu Spring在一个简单的订阅中提供对 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件。

了解更多

即将举行的活动

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

查看全部