Spring 3.1 M2:使用 @Configuration 类和配置文件进行测试

工程 | Sam Brannen | 2011年6月21日 | ...

正如 Jürgen Höller 在其发布 Spring 3.1 M2 的文章中提到的那样,Spring TestContext 框架(*) 已经进行了彻底的修改,以便为@Configuration 类和环境配置文件提供一流的测试支持。

在这篇文章中,我将首先带您逐步了解一些演示这些新测试功能的示例。然后,我将介绍 TestContext 框架中的一些新扩展点,这些扩展点使这些新功能成为可能。

      请注意:这是我公司博客 www.swiftmind.com 的交叉发布。

背景

在 Spring 2.5 中,我们引入了Spring TestContext 框架,该框架提供了基于注解的集成测试支持,可用于 JUnit 或 TestNG。本文中的示例将重点介绍基于 JUnit 的测试,但此处使用到的所有功能也适用于 TestNG。

从核心上讲,TestContext 框架允许您使用@ContextConfiguration 对测试类进行注解,以指定要使用哪些配置文件来加载测试的ApplicationContext。默认情况下,ApplicationContext 使用GenericXmlContextLoader 加载,后者从 XML Spring 配置文件加载上下文。然后,您可以通过使用@Autowired@Resource@Inject 对测试类中的字段进行注解来访问ApplicationContext 中的 Bean……

为虚拟化和云 Java 定义未来

工程 | Rod Johnson | 2011年6月14日 | ...

今天,我荣幸地宣布我们 VMware vFabric™ 应用程序平台的第 5 版,它为云和虚拟化执行环境中的企业 Java 定义了未来。vFabric 通过提供与下一代平台服务配对的现代编程模型,为新的和现代的云架构铺平了道路。一条没有被上一代技术的累赘和复杂性所覆盖的道路。借助 vFabric 5,VMware 确保企业 Java 能够应对未来要求苛刻、数据密集型和可大规模扩展的应用程序带来的挑战。

vFabric 5 继续提供运行 Spring 应用程序的最佳场所,使用 vFabric tc Server,并能够通过 vFabric Hyperic 以令人难以置信的智能方式监控和管理这些生产解决方案。该平台还直接解决了云计算的技术挑战,支持新的数据管理方法,使应用程序能够使用我们的 vFabric GemFireRabbitMQ 跨弹性、地理分布式云架构进行扩展……

本周的 Spring:2011年6月14日

工程 | Josh Long | 2011年6月14日 | ...

欢迎回到“本周的 Spring”的另一期,这一周真是太精彩了!上周发布了Spring 3.1 M2vFabric 5!有很多激动人心的事情要谈论,以及一般的社区新闻,所以让我们开始吧!

  1. 今天,VMware 宣布发布VMware vFabric 5,这是一个应用程序平台,它为云和虚拟化执行环境中的企业 Java 定义了未来。vFabric 5 包含 Spring 社区已经熟悉的许多技术,包括 tc ServerHypericGemFireRabbitMQ,但现在增加了一些新技术。
    • Java 弹性内存(EM4J):tc Server 的一项新功能,它在应用程序服务器和底层虚拟机之间提供了全新的协调级别。EM4J 使用底层 vSphere 虚拟化来克服 Java 静态内存堆的一些限制。
    • Spring Insight Operations:利用来自Spring Insight 项目的相同代码级跟踪技术,但将来自多个应用程序服务器的信息整合到一个控制台中,并提供汇总视图、深入分析和历史比较,以供生产系统使用。
    • SQLFirevFabric SQLFire 利用经过时间考验的 vFabric GemFire 基础,提供内存速度和水平扩展的数据,但 vFabric SQLFire 为该服务添加了熟悉且标准的 SQL 和 JDBC 接口。

    Rod Johnson 在他的最新博客中讨论了发布的所有详细信息。请务必查看最新版本并试用。

  2. Spring 核心负责人 Juergen Hoeller 宣布已发布 Spring 3.1.0 M2!终于,朝着 Spring 3.1 GA 稳步前进的下一步!新版本与上一个版本一样功能丰富,包含大量主要的新功能(但绝对不仅限于此!),包括改进的 Java 配置支持、基于 Servlet 3.0 的无 XML 和无忧的 Spring MVC 应用程序引导、用于 JPA 和 Hibernate 的新Builder API,以及更多其他功能!查看此处发布公告,并从您选择的构建依赖项管理工具或下载页面获取位。
  3. <LI> Hot on the heels of the Spring 3.1 release announcement, <a href="http://blog.springsource.com/2011/06/10/spring-3-1-m2-configuration-enhancements/">Chris Beams chimes in</a> on the much-improved Java-centric configuration model in Spring 3.1, M2, even as compared to M1! The features are really starting to come together to make this one of the smoothest, well arranged releases, yet! </LI> 
    
    <lI> 
    

    Spring 3.1 M2 代表了 Spring 核心以及 Spring MVC 的显著改进!Rossen Stoyanchev 介入介绍了众多(确实,您需要阅读详细的博客才能……

Spring 3.1 M2:Spring MVC 增强功能

工程 | Rossen Stoyanchev | 2011年6月13日 | ...

这篇文章重点介绍了 Spring 3.1 M2 中 Spring MVC 的新增功能。以下是主题

  • MVC 命名空间的基于代码的等效项。
  • 可自定义的 @MVC 处理。
  • 编程模型改进。

简要提醒一下,此处讨论的功能在Greenhouse 项目中处于活动状态。

Spring MVC 的基于代码的配置

正如 Chris 上周五在其博客文章中指出的那样,XML 命名空间极大地减少了配置,但也降低了透明度,有时还会降低灵活性。这对于 MVC 命名空间来说是正确的,它支持许多自定义,但并非所有可用的内容。这意味着您可以使用它,或者干脆放弃它。我们认为基于代码的配置为此提供了解决方案,以及从简单到高级的路径。

让我们从这个简单而熟悉的代码片段开始


<mvc:annotation-driven />

尽管不需要用于使用带注解的控制器,但<mvc:annotation-driven> 执行了许多有用的操作——它检测 JSR-303(Bean 验证)实现的存在并使用它配置数据绑定,如果 Jackson JSON 库可用,它会添加 JSON 消息转换器,以及其他一些可以节省大量配置的操作。

现在让我们使用基于代码的配置来匹配它


@Configuration
@EnableWebMvc
public class WebConfig {
}

此处,@EnableWebMvc 导入一个与<mvc:annotation-driven> 的优点匹配的@Configuration 类。就这么简单。

下一步是使用<mvc:annotation-driven> 中的属性,例如提供FormattingConversionService,或添加子元素,例如配置消息转换器,或使用其他 MVC 命名空间元素,如<mvc:interceptors><mvc:resources> 等。

让我们看看如何在基于代码的配置中完成所有这些操作


@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addFormatters(FormatterRegistry registry) {
        // register converters and formatters...
    }

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        // add message converters...
    }

    @Override
    public void configureInterceptors(InterceptorConfigurer configurer) {
        configurer.addInterceptor(new…

Spring 3.1 M2:配置增强功能

工程 | Chris Beams | 2011年6月10日 | ...

正如 Juergen 在昨天的文章中提到的,以及我在之前文章中关于 3.1 M1 的内容,Spring 3.1 的主要主题之一是完成我们在 Spring 中基于代码配置的愿景。我们认为,现代企业 Java 应用程序应该可以选择 Java 和 XML 作为其配置的一流选项。在这篇文章中,我们将了解 Spring 3.1 M2 如何帮助实现这一目标。

请注意,尽管基于 Java 的配置自 Spring 3.0 以来一直可用,但在此版本中,它现在与已开发的更多 XML 基于的功能相当……

Spring Framework 3.1 M2 发布

工程 | Juergen Hoeller | 2011年6月9日 | ...

Spring Framework 3.1 M2 已于本周发布,标志着 3.1 里程碑阶段的结束。我们现在正在进入候选版本阶段,为 7 月份发布功能完整的 RC1 和 9 月份发布 GA 版本做准备。

3.1 M2 完成了 2 月份在 3.1 M1 中启动的几个主要主题的工作

  • 我们已经稳定了我们的环境抽象环境配置文件机制。如果您还没有尝试过,现在是尝试的好时机!

  • 我们的基于 Java 的应用程序配置方法已从 M1 中的 @Feature 方法更改为 M2 中常规 @Configuration 类上的@Enable* 注解

  • 缓存抽象已进行了修改,以提供最少的缓存交互 SPI。我们的声明式缓存解决方案(@Cacheable 等)继续位于其顶部。

本周的 Spring:2011年6月7日

工程 | Josh Long | 2011年6月8日 | ...

欢迎回到另一个激动人心的综述!本周过得飞快。说实话。发生了很多新事情,所有这些都在上周欧洲 S2G 论坛的兴奋浪潮之后发生。让人喘不过气来,但也很兴奋。继续阅读!

  1. Mark Fisher 和 Ramnivas Laddad 的网络研讨会Spring 从零到云 60 分钟现已在线提供
    此网络研讨会是 Spring、Spring Roo 和 Grails 在 CloudFoundry 上的一些支持的闪电般快速的巡回演出。查看一下!
    但是,在您开始观看之前,请快速在CloudFoundry.com 上注册以访问公共免费测试版云服务。如果您想查看代码和了解更多信息,请查看CloudFoundry.org

  2. Spring BlazeDS 负责人兼“Spring Web 大神”Jeremy Grelle 宣布了Spring Flex 项目的首个候选版本。Spring Flex 项目将 Flex BlazeDS 中间件与 Spring 集成,提供了一种极其简单的途径,用于以 Flex 或 Adobe AIR Web 和桌面客户端可以访问的方式公开 Spring Bean。Spring Flex 项目还提供了与 Spring Security 的集成,并为基于服务器端推送的消息传递提供了紧密的支持,完全在 BlazeDS 内部,或通过 JMS 或 Spring Integration 实现。是否曾经想过通知登录应用程序的用户服务器端发生了某些事情(Twitter 消息、新的 AMQP 消息、新的 XMPP 消息,等等)?Spring Flex 使其变得易如反掌。
  3. SpringSource Tool Suite 团队负责人 Martin Lippert 接受了关于SpringSource Tool Suite 2.6 最新功能的采访。他谈到了许多亮点,包括 STS 2.6 重构的 Spring Webflow 可视化、Java 配置支持、云、基于代理的重新加载以及后续计划。快去看看吧!
  4. Thomas Risberg 宣布了Spring Data Document 对 MongoDB 的支持,1.0.0.M3 版本。Spring Data Document 1.0.0.M3 中的更改和新功能包括大幅改进的映射和转换支持。MappingMongoConverter 现在是MongoTemplate使用的默认转换器,而SimpleMongoConverter已被弃用,并将被移除。默认集合名称的概念也已被移除,MongoTemplate 的所有操作都基于作为操作目标的实体类所使用的集合名称。用于实体类的集合名称默认为小写字母开头的类名,但可以使用@Document注解进行自定义。请参阅变更日志以获取更多详细信息。
  5. Virgo 3.0.0 的里程碑 5 版本现已提供下载。这是一个重要的里程碑,它添加了重要的功能增强,将多个依赖项升级到最新版本,包括 Spring 3.0.5、Tomcat 7.0.12 和 Servlet 3.0,并修复了许多错误。完整详细信息请参阅发行说明来自 EclipseRT 的 Virgo Web 服务器是一个完全基于模块的 Java 应用程序服务器,旨在以高度的灵活性和可靠性运行企业级 Java 应用程序和 Spring 驱动的应用程序。它提供了一个简单而全面的平台来开发、部署和服务企业级 Java 应用程序。
  6. Spring Integration 提交者 Marius Bogoevici 撰写了一篇关于在 JBoss AS 中使用 Spring 的 JPA EntityManager 的选项的精彩文章。文章的主要内容是,应用程序服务器默认情况下会自动创建EntityManager,因此可能无需在 Spring 中重新创建它——只需注入现有的引用即可。这种方法的具体目的是为了避免功能完整的应用程序服务器的武断行为。如果希望在 Tomcat 中运行,则 Spring 是配置 JPA EntityManager 的最简单方法。Marius 还解释了如何通过禁用应用程序服务器的行为来让 Spring 完全控制。这样做通常具有更高的性能,并将配置保持在应用程序本身,而不是服务器中,从而带来诸多好处。
  7. Matt Raible 发布了他关于 Web 应用程序安全性的博文和屏幕截图的后续文章。之前,他演示了如何在 Web 应用程序中以伪相同的方式使用Spring SecurityApache ShiroJava EE 安全性来确保 Web 应用程序的安全,并根据需要突出显示差异。这篇后续文章讨论了这三种技术,并提供了在 Spring MVC 应用程序中集成时启用编程登录的比较。Spring Security 支持已经存在很长时间了,并且在许多容器(不仅仅是兼容 Java EE 6 的容器)中都能毫无问题地运行。很棒!
  8. 你是否尝试过其他基于 JVM 的语言?你是否了解过Scala?在最近于美国加利福尼亚州帕罗奥图举行的 Scala Days 大会上,Cloud Foundry 团队宣布了CloudFoundry.com 上对 Scala 的支持
  9. 如果你上周参加了在伦敦举行的 S2G 论坛,你将获得一本免费的开源期刊——一本印刷版(以及可免费下载的.PDF)杂志。这份出版物出色地涵盖了一些 Spring 框架技术。它可以从出版商的网站上免费下载。在此查看第一期第二期。例如,第二期对Spring.NET(包括新的代码配置——Spring Java 的 Java 配置的 .NET 等效项)进行了很好的介绍,介绍了 Spring.NET 的RestTemplate(Spring Java 的RestTemplate的一个不错的等效项),并介绍了如何使用Spring Integration(和 Spring Web Services)轻松公开 Web 服务。如果拥有支持.PDF的电子阅读器或平板电脑,这种格式特别理想。快去看看吧!

Grails 2.0 倒计时:单元测试

工程 | Peter Ledbrook | 2011 年 6 月 7 日 | ...

Grails 1.4(现在是 2.0)的首个里程碑版本现已发布,我们正处于通往1.4 2.0 正式版的最后阶段。随着我们接近那个节点,我将撰写一系列博文,涵盖1.4 2.0 版本带来的各种新功能和更改。我将从新的测试支持开始。

从一开始,Grails 就为开发者提供了三个级别的测试支持:单元测试、集成测试和功能测试。单元测试过去和现在都具有独立于 Grails 运行的优势,但它们通常需要相当多的额外工作,例如……

用于构建 RabbitMQ AMQP 应用程序的简单 Groovy DSL

工程 | Jon Brisbin | 2011 年 6 月 1 日 | ...

异步应用程序在开发过程中有时可能是一个挑战,因为你通常需要两个单独的组件才能查看完整的消息发布和消费生命周期。通常情况下,你会编写一个可以将消息转储到 System.out 或日志文件的消费者,以便确保你的发布者正在执行正确的操作。如果能够在一个组件中模拟消息发布和消费交互,以便实际查看正在发生的事情,那将非常方便。

RabbitMQ Groovy DSL 旨在通过提供非常简洁的……来帮助解决这个问题。

本周 Spring 动态:2011 年 5 月 31 日

工程 | Josh Long | 2011 年 5 月 31 日 | ...

今天在伦敦举行的 SpringSource S2G 论坛上,兴奋之情仍在持续!活动前的氛围令人惊叹,关于各种深入技术主题的演讲也令人印象深刻!我的一些问题得到了解答,并且了解了许多关于 SpringSource 的一些新的、有趣的、即将推出的技术。如果你今年没有机会参加,我们将在下周发布会议幻灯片。另外,别忘了,今年晚些时候(10 月)在芝加哥还有SpringOne 2GX

  1. 许多人在尝试过Spring Batch后就爱上了它,而且许多人开始向其他人推荐它,正是因为它非常棒,他们知道自己不必再自己解决这个问题。批处理是我们所有人或多或少都会遇到的问题:将数据从一个数据库移动到另一个数据库、从文件系统读取数据、进行 Web 服务调用以及需要处理重试逻辑等。这些用例(以及更多用例)非常适合 Spring Batch。如果你想查看一个非常简洁、实用的技术介绍,重点关注代码,请查看Sanjoy Kumar Roy 的博客,其中介绍了 Spring Batch。非常酷!如果你尝试了 Spring Batch,并且觉得需要补充一些内容,请撰写一篇博客,并通知我,以便我可以在此页面上突出显示它!
  2. 	<li>
    		Roy Clarkson notes that starting May 28, 2011, the repositories for <a href="http://www.springsource.org/spring-android">Spring Android</a> and <A HREF ="http://www.springsource.org/spring-mobile">Spring Mobile</a> have moved to GitHub, and are available at the following URLs:
    
    	<div><b>Spring Android:<br/></b>
    		<UL><li><a href="https://github.com/SpringSource/spring-android">Spring Android</a></li>
    		<LI><A href="https://github.com/SpringSource/spring-android-samples">Spring Android Samples</a>
    			</li> </div>
    				<div><b>Spring Mobile:<br/></b>
    					<UL><li><a href="https…

获取 Spring 时事通讯

保持与 Spring 时事通讯的联系

订阅

走在前沿

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

了解更多

获取支持

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

了解更多

即将举行的活动

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

查看全部