Spring 对 OSGi 的支持势头正劲

工程 | Adrian Colyer | 2006 年 9 月 7 日 | ...

这始于一件小事。我当时凭直觉觉得 Spring 和 OSGi 应该能很好地结合在一起。其想法是,通过使 Spring 应用能够部署在 OSGi 运行时环境中,我们可以为 Spring 应用带来更好的模块化、版本控制、运行时部署和更新能力。这是一个我从未真正宣传过的项目;我只是开始尝试、与一些人交流并编写一些早期原型代码。

结果表明,有很多人似乎对 Spring 和 OSGi 感兴趣。我们正与来自 BEA、Oracle、IBM、Eclipse、OSGi Alliance 和其他几家的代表合作,以构建一个共享模型,探讨 Spring 对 OSGi 的支持应该是什么样子,以及如何才能轻松地在 OSGi 运行时上构建企业应用。该规范的最新版本附在 Spring JIRA 问题 1802 中。这里是规范文本的直接链接...

Spring 2.0 中的 Before 通知

工程 | Ben Hale | 2006 年 9 月 5 日 | ...

各位可能都知道,Spring 2.0 的一个重大改进是增加了 AspectJ 切入点语言以及整体上更好地与 AspectJ 集成。虽然我认为大家相信这从长远来看会带来巨大的好处,但也导致了一些问题。我们发现 Spring AOP 一直以来都有一些行为,而 AspectJ 从未有过。

出现的一个大问题是 Before 通知(advice)的行为。如果你在 Spring 1.x 中使用过 Spring AOP,你可能知道 Spring 允许你在参数传递给目标之前修改参数值……

Spring 标准化程度不断提高

工程 | Steven Schuurman | 2006 年 8 月 29 日 | ...

Spring - 长期存在 我每天拜访很多客户,和更多人交流。这包括现有的 Interface21 客户以及对我们在欧洲的产品和服务感兴趣的公司。我注意到在我的谈话中有一个反复出现的主题:Spring 已经来了,并且会长期存在。

在过去的一年里,我目睹了高层决策,这些决策使得 Spring 在领先的企业级 Java 开发公司中得到了全面标准化。就在两周前,我问了我的一位客户——欧洲最大的 Java 部门经理之一……

创建 Spring 2.0 命名空间?使用 Spring 的 AbstractBeanDefintionParser 层次结构。

工程 | Ben Hale | 2006 年 8 月 28 日 | ...

最近我似乎一直在专注于创建 Spring XML 命名空间。在 XSD 和 Spring 方面,为了找到一个好的解析器创建模式,经历了大量的尝试和错误。我遇到的最大困惑之一就是 AbstractBeanDefinitionParser 的层次结构。目前这方面的文档还不是特别完善(但 JIRA 上有相关问题,所以在 GA 之前会修复),所以我将向您介绍您的选择、它们的用途以及如何使用它们。

AbstractBeanDefinitionParser 选择

Spring 提供了三种主要的 BeanDefinitionParser 来帮助您解析 XML 命名空间。

我将从最具体的开始,逐步介绍到最一般的,以展示如何在需要时获得更多能力。如果您想跳过示例直接查看摘要,请查看此处...

Spring LDAP 1.1 发布

发布 | Mattias Arthursson | 2006 年 8 月 28 日 | ...

亲爱的 Spring 社区成员:

我们很高兴地宣布 Spring LDAP 1.1 版本已发布。这是该库作为 Spring Framework 子项目发布的第一个版本。下载 | 文档 | API

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

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

除此之外,Spring LDAP 还提供了将 NamingExceptions 转换为 DataAccessExceptions 的异常转换功能,以及一些用于处理过滤器、LDAP 路径和属性的实用工具。

Spring-LDAP 需要 J2SE 1.4。构建需要 J2SE 1.4。运行示例需要 J2EE 1.4 (Servlet 2.3, JSP 1.2)。

如何开始
从上面的链接下载发行版。发行版包含丰富的 JavaDoc 文档、完整的参考文档以及一个示例应用,演示了使用 Spring LDAP 的不同方式。

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

历史
Spring LDAP 基于 SourceForge LdapTemplate 项目。建议 LdapTemplate 的用户切换到 Spring LDAP。

Mattias Arthursson & Ulrik Sandberg
Spring LDAP 项目团队

验证逻辑(和我的第一篇文章!)

工程 | Colin Yates | 2006 年 8 月 25 日 | ...

大家好!

这是我上个月加入 Interface21 以来发表的第一篇文章。我的上一个博客现已正式弃用,我不会再更新了。

那么,我的第一篇文章的主题是什么(除了自我介绍)呢?  验证逻辑。  这不会是关于如何在 Spring 框架中执行验证的详细讲解,而是讨论一个我特别烦恼的问题 :)

具体来说,我想讨论一下验证逻辑中应该包含什么。  这似乎是一个无需多想的答案:“验证指定数据的逻辑”。  好的,这*确实*是显而易见的,但请继续阅读 :)。如您所知,Spring 框架通过 Errors Validator 接口为您的验证提供了很好的抽象层。  特别是 Validator,您可以在其中将业务特定的验证规则应用于已填充的领域对象。  Spring 出色的绑定支持负责更新您的领域模型……

Steven 的 biz.blog 有新家了

工程 | Steven Schuurman | 2006 年 8 月 13 日 | ...

大家好,

这只是一个快速的条目,告诉大家我已正式将我的 biz.blog 搬迁到这里,也就是我们新的 Interface21 团队博客。  我很高兴这个群组博客能作为 Interface21 的声音。  了解我的人知道,你会期待一种不同的视角

我有一些保存的草稿正在处理中。请留意即将发布的、深入探讨 Interface21 业务方面的新文章……

在此之前,Steven 敬上

Spring 2.0 RC3 发布

发布 | Juergen Hoeller | 2006 年 8 月 11 日 | ...

亲爱的 Spring 社区成员:

我们很高兴地宣布 Spring 2.0 RC3 已发布。  下载 | 文档 | 更新日志

这个第三个候选版本包含了基于我们收到的前几个候选版本的宝贵用户反馈进行的许多改进。  有了这个版本,Spring 2.0 正式版就近在眼前了。

最重要的改进包括

  • 对于 default-lazy-init="true",Spring 1.2 兼容性已恢复,特别是在按类型检测特殊 bean(如 PropertyPlaceholderConfigurer)方面。此外,懒加载(lazy class loading)已被重写,以允许在类名等中使用占位符。对于特殊的 ApplicationContext,仍然可以强制执行严格的懒加载。
  • 基于 @Repository 注解的持久化异常转换现在也可用于 Hibernate3、JDO 和 TopLink,而不仅仅是 JPA。  异常转换现在尽可能地基于底层 ORM 工具的原生异常,只有明确指定时才应用 Spring 特定的 SQLException 转换。
  • 在我们的 JMS 支持中,DefaultMessageListenerContainer 改进了资源处理(也适用于 JBoss 4.0),并且能够从断开的连接或目标中恢复。JMS 资源的缓存现在完全可配置,为 XA 和非 XA 场景提供了合理的默认值。此外,JmsTemplate 在 JTA 事务中重用缓存的 JMS 资源。
  • Servlet 和 Portlet Web MVC 现在支持一个通用的 WebRequestInterceptor 抽象,这使得 View 拦截器中的 Open Session/EntityManager/等可以在 Servlet 和 Portlet 环境中重用。因此,所有此类 Portlet 特定的拦截器已被新的通用拦截器(如 OpenSessionInViewInterceptor)取代。

当然,还有许多进一步的细节改进。请参阅更新日志文件(以及 JIRA 中的更新日志)了解详细信息。

如果您在使用 RC3 过程中遇到任何剩余问题,请告知我们。  Spring 2.0 正式版现在近在眼前了。

Juergen Hoeller,
Spring Framework 开发负责人

消息驱动的 POJO!

工程 | Mark Fisher | 2006 年 8 月 11 日 | ...

在 Spring 2.0 的所有新特性和改进中,我必须承认消息驱动的 POJO 是我个人最喜欢的之一。我感觉很多其他 Spring 用户也会有同样的感受。

这里我提供一个快速介绍。还有很多内容可以展示,我会在后续文章中继续介绍。但就目前而言——这应该能为你提供足够的信息,让你开始使用真正基于 POJO 的异步 JMS!我希望你和我一样对此感到兴奋 ;)

前提条件

您需要在类路径中包含以下 JAR 文件。我也列出了我正在使用的版本(任何 spring-2.x 版本都可以。事实上,我几分钟前刚把 RC3 放进去)

  • activemq-core-3.2.2.jar
  • concurrent-1.3.4.jar
  • geronimo-spec-j2ee-managment-1.0-rc4.jar
  • commmons-logging-1.0.4.jar
  • log4j-1.2.9.jar
  • jms-1.1.jar
  • spring-2.0-rc3.jar

设置环境

首先,我们需要设置环境。我将使用 ActiveMQ,但更换提供商的影响将仅限于修改此文件。我将此文件命名为 "shared-context.xml",因为您很快就会看到,我将为 JMS 通信的双方导入这些 bean 定义。以下是“共享”的 bean 定义:连接工厂和两个队列(一个用于请求,一个用于回复)。


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
                           http://www.springframework.org/schema/beans/spring-beans.xsd">
	
    <bean id="requestQueue" class="org.activemq.message.ActiveMQQueue">
        <constructor-arg value="requestQueue"/>
    </bean>
 
    <bean id="replyQueue" class="org.activemq.message.ActiveMQQueue">
        <constructor-arg value="replyQueue…

使用 Spring 2.0 和 AspectJ 简化企业应用

工程 | Adrian Colyer | 2006 年 8 月 10 日 | ...

我为 InfoQ 网站撰写的一篇文章刚刚上线了:使用 Spring 2.0 和 AspectJ 简化企业应用

我听到很多人说“AOP 太难了”,或者“AOP 让事情变得太复杂了”。从某种意义上说,这篇文章就是为了反驳这些观点而写的(因此标题是“简化企业应用开发”)。我的意思是,AOP 的核心要点在于,你可以通过引入切面(aspects)再次赋予每个模块单一职责,从而简化那些变得复杂和纠缠不清的软件实现。当然,对于一些人来说……

获取 Spring 电子报

订阅 Spring 电子报,保持联系

订阅

领先一步

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

了解更多

获取支持

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

了解更多

近期活动

查看 Spring 社区的所有近期活动。

查看全部