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 Validation) 实现的存在并与之集成数据绑定,如果 Jackson JSON 库可用,它会添加一个 JSON 消息转换器,以及其他一些可以节省大量配置的工作。

现在,让我们将其与基于代码的配置进行匹配


@Configuration
@EnableWebMvc
public class WebConfig {
}

这里的@EnableWebMvc 导入了一个 @Configuration 类,它提供了与 <mvc:annotation-driven> 相同的功能。就是这么简单。

下一步是使用 <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年06月09日 | ...

Spring Framework 3.1 M2 已于 本周发布,标志着 3.1 里程碑阶段的结束。我们现在正进入发布候选阶段,计划在七月发布功能完整的 RC1,并在九月发布 GA 版本。

3.1 M2 完成了在二月份 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 注册,以获取对公开的免费 Beta 云服务的访问权限。如果您想查看代码并了解更多信息,请访问 CloudFoundry.org

  2. Jeremy Grelle,Spring BlazeDS 负责人和“Spring Web 达人”,宣布了 Spring Flex 项目的第一个发布候选版本。Spring Flex 项目集成了 Flex BlazeDS 中间件与 Spring,提供了一种极其简单的方式来公开 Spring Bean,以便 Flex 或 Adobe AIR 的 Web 和桌面客户端进行消费。Spring Flex 项目还提供了与 Spring Security 的集成,并提供对服务器端推送消息传递的紧密支持,完全通过 BlazeDS,或者通过 JMS 或 Spring Integration。是否曾想通知登录应用程序的用户服务器端发生了什么(Twitter 消息、新 AMQP 消息、新 XMPP 消息,无论什么..)?Spring Flex 让这一切变得简单。
  3. Martin Lippert,SpringSource Tool Suite 团队负责人,接受了关于 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 中的变更和新功能包括大幅改进的映射和转换支持。`MongoTemplate` 现在默认使用 `MappingMongoConverter`,而 `SimpleMongoConverter` 已被弃用并将被移除。默认集合名称的概念也被移除,`MongoTemplate` 的所有操作都基于目标实体类的集合名称。实体类的集合名称默认为类名的小写字母开头,但可以使用 `@Document` 注解进行自定义。有关更多详细信息,请参阅 更改日志
  5. Virgo 3.0.0 的 M5 版本现已可供下载。这是一个重要的里程碑,它增加了重要的功能增强,将多个依赖项升级到最新版本,包括 Spring 3.0.5、Tomcat 7.0.12 和 Servlet 3.0,并修复了许多错误。完整详情可在 发布说明中找到。EclipseRT 的 Virgo Web Server 是一个完全基于模块的 Java 应用程序服务器,旨在以高度的灵活性和可靠性运行企业 Java 应用程序和 Spring 驱动的应用程序。它提供了一个简单而全面的平台来开发、部署和维护企业 Java 应用程序。
  6. Marius Bogoevici - Spring Integration 提交者 - 撰写了 一篇精彩的文章,探讨了在 JBoss AS 中使用 Spring 的 JPA `EntityManager` 的选项。文章的主要观点是,应用程序服务器默认会自动创建一个 `EntityManager`,因此可能无需在 Spring 中重新创建它 - 您只需注入现有的引用即可。这种方法特别适合规避功能齐全的应用程序服务器的默认行为。如果您想在 Tomcat 中运行,那么 Spring 是配置 JPA `EntityManager` 的最简单方法。Marius 还解释了如何通过禁用应用程序服务器行为来让 Spring 完全控制。这通常具有更高的性能,并将配置保留在应用程序本身而不是服务器上。
  7. Matt Raible 发布了他关于 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 入门(包括新的代码配置——.NET 中 Spring Java 的 Java 配置的类似物),对 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 动态:2011 年 5 月 24 日

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

真是精彩的一周!随着我们即将迎来在阿姆斯特丹(26 日)以及下周在伦敦(5 月 31 日)举行的 S2G 论坛,激动人心的气氛弥漫在空气中。如果您在欧洲,请务必不要错过这些激动人心的、内容丰富的会议,会议将涵盖 Spring、Grails、云、大数据以及当然还有工具等各种主题。

  1. Mark Fisher 和 Ramnivas Laddad 上周进行了他们备受欢迎的网络研讨会——“60 分钟从零到云”,主题是 Cloud Foundry。感谢所有人的参与并取得了成功!如果您错过了,您仍然可以在此处获取幻灯片和观看回放。请注意,正如往常一样,当您完成 CloudFoundry 网络研讨会后,还有许多其他资源。查看其他开发者网络研讨会(向下滚动,点击“Developers”选项卡),并查看 SpringSource Dev YouTube 页面。
  2. Spring 项目负责人 Juergen Hoeller 今年早些时候在伦敦 QCon 大会上就下一代 Spring——Spring 3.1 及更高版本进行了演讲。他的演讲和幻灯片可在 InfoQ.com 上找到
  3. 关于《Spring Data Graph 入门》网络研讨会的视频也已可用。本次网络研讨会介绍了 Spring Data Graph 项目——这是 Spring 和 Neo4j 工程团队的联合努力,旨在为您的 Spring 应用程序带来一流的 Neo4J 支持。如果您想要一种更自然的方式将 NOSQL 数据技术集成到现有架构中,只是想获得更高的速度,或者想了解您错过了什么,那么您绝对应该看看这次网络研讨会。
  4. Mark Thomas——Tomcat 提交者和 Apache Bug 跟踪基础设施维护者——在一次出色的“吃自己的狗粮”的演示中,解释了 Apache JIRA 接口如何被搜索引擎“弄得有点晕”——不是不堪重负,但仍然运行效率低下——这些搜索引擎访问特定的 JIRA,但未维护会话 cookie,从而触发了大量会话的创建。Mark 描述了为 Tomcat 7(和 SpringSource 的 tcServer创建了一个自定义 Valve,该 Valve 将单个 Tomcat 会话与每个网络爬虫关联起来,从而大大减少了它们的占用空间。
  5. Spring Web Services 2.0.2 已发布。有关更多信息,请参阅更改日志Spring Web Services 1.5.1.0 也已发布。有关本次发布中的更改,请参阅更改日志。两个版本本身都包含了一些有价值的更新,但重要的是,它们都解决了潜在的安全问题。建议用户尽快升级。
  6. <LI> Google I/O, Google's developer conference, is an exciting time for enterprise Java developers, and of course, this also means Spring developers. One notable announcement was the <a href="http://vaadin.com/springroo">1.0 release of the Spring Roo plugin for Vaadin,</a> which is a widget-centric approach to web application development.  Vaadin's a very innovative way to build web applications today, and - of course - <a href="http://vaadin.com/wiki/-/wiki/Main/Spring%20Integration">it works well with Spring.</a> (NB: those instructions are old, but they should still work, and you can just…

本周 Spring:2011年5月10日

工程 | Adam Fitzgerald | 2011年5月11日 | ...

五月已近尾声,而为期中的 阿姆斯特丹和伦敦 S2G 论坛的所有准备工作都已就绪。这些 S2G 论坛是欧洲用户获取 Spring 社区相关最佳信息的首选之地(费用最低!)。希望在 阿姆斯特丹(2011年5月26日 - 114 欧元)和/或 伦敦(2011年5月31日 - 99 英镑)见到各位!

在此期间,各位想要更深入了解 Spring 框架如何在新兴的 CloudFoundry 开源云 PaaS 项目中运行的,千万不要错过一场网络研讨会——10 天后,将在北美和欧洲举办的“Spring 从零到云,60 分钟搞定”活动,面向 北美欧洲

  1. 已发布 SpringSource Tool Suite 2.6.1。此次发布包含常规的更新和功能。一些特别值得注意的功能包括:更新了捆绑的 vFabric tc Server,2.5 版本, 改进了 tc Server 实例创建的支持,更新了 Spring Roo 到最新版本 1.1.3,以及(太棒了!)捆绑支持 CloudFoundry。请查看 “新增与值得关注” PDF 文档了解详情。
  2. 	<li> The  <A HREF="http://blog.cloudfoundry.com/">CloudFoundry blog</a> has run two different parts with a detailed look at  what happens when you <code>push</code> applications to the CloudFoundry project. The first post details what happens from the <a href="http://blog.cloudfoundry.com/post/4737632136/what-happens-when-you-vmc-push-an-application-to-cloud">client-side perspective</a>. The second post provides details on what happens from <a href="http://blog.cloudfoundry.com/post/5223861703/how-cloud-foundry-works-when-a-new-application-is">the cloud-side perspective, once the…

Groovy-Eclipse 中更好的 DSL 支持

工程 | Andrew Eisenberg | 2011年5月9日 | ...

Groovy 语言是创建领域特定语言 (DSL) 的绝佳平台。一个好的 DSL 可以使程序更简洁、更具表现力,并提高程序员的生产力。然而,到目前为止,这些 DSL 在编辑器中并未得到 Groovy-Eclipse 的直接支持。当大量使用 DSL 时,内容辅助、搜索、悬停和导航等标准 IDE 功能会失去其价值。长期以来,编写 Eclipse 插件来扩展 Groovy-Eclipse 是可能的,但这是一种重量级方法,需要对 Eclipse API 有特定了解。现在……

获取 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

领先一步

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

了解更多

获得支持

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

了解更多

即将举行的活动

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

查看所有