1.Spring4.0的新特性

从2004年Spring的1.0发布后,后面又发布了很多重要的版本:Spring2.0提供了XML命令空间和AspectJ的支持;Spring2.5提出了注解驱动(annotation-driven)配置;Spring3.0引入了跨框架代码库的java 5+、基于java的Configuration模型等。

Spring 4.0是最近发布的主要版本,而且对java8完全支持。当然,你可以继续使用低版本的java,但最低只能是java SE6。Spring 4.0里面也删除了很多废弃的类和方法。

升级Spring4.0的方法请参考:

https://github.com/spring-projects/spring-framework/wiki

1.1改进的入门体验

新版sping.io网站为Spring的初学者提供了一系列的入门指南。这个网站也提供了很多基于Spirng的项目,供开发者学习。

如果你平时也使用Maven,那你应该对Spring的配套BOM(bill of materials)也感兴趣。

1.2删除的包和方法

Spring4.0里面删除了很多包、类和方法,因此,在升级成4.0以前,首先要确保已经将过时的代码修复。

要查看4.0的全部变化,请查看:

http://docs.spring.io/spring-framework/docs/3.2.4.RELEASE_to_4.0.0.RELEASE/。

1.3 JAVA8

Spring4.0能够支持java 8的很多特性。你可以通过Spring的回调接口使用lambda

expressions and method。提供了java.time的支持,通过@Repeatable对很多注解进行了改造。

Spring4.0保持了对java低版本的兼容,但最低也只能是2010年1月发布的JDK 6 update 18。然后,对于新的基于Spring4的项目,建议使用java7或java8。

1.4 JAVA6/JAVA7

JAVA EE 6、JPA 2.0、Servlet 3.0被认为是Spring 4的baseline。为了保持和Google应用、其它较老应用服务的兼容,可能会将Spring 4集成到Servlet 2.5环境中。然而,建议最好使用Servlet 3.0以上。

Spring4支持JAVA EE7级别的相关规范,尤其是JMS 2.0, JTA 1.2, JPA 2.1, Bean Validation 1.1, and JSR-236并行工具。

1.5Groovy Bean Definition DSL

通过Groovy DSL可以在Spring4里面定义外部bean配置文件。这和XML定义bean的方法类似,但语法更简约。使用Groovy也使得在bootstrap代码中轻松的嵌入bean定义。例如:

了解更多请参考:

http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/beans/factory/groovy/GroovyBeanDefinitionReader.html

1.6Core Container改进

Spring4的core container有很多改进的地方:

当注入bean的时候,Spring可以将泛型作为一种修饰符。比如你想用Spring的Repository,可以通过注入实现:@Autowired Repository<Customer> customerRepository。

如果你用过Spring的元注解支持,现在可以从元注解中开发定制化注解,实现定制属性。

和@Bean定义一样,@Lazy注解也可以在注入点(injection points)使用。

开发都可以使用基于java的配置来使用@Description注解。

通过@Conditional注解增加了条件过滤bean的广义模型。

1.7General Web改进

Spring4.0框架目前只支持Servlet 3.0以上环境,如果你使用Spring MVC Test Framework,必须要确保在classpath中有Servlet 3.0兼容的JAR包。

每个@RequestMapping方法后不必再使用@ResponseBody,可以使用新的@RestController来实现。

提供了全面的时间区支持。

1.8Testing改进

Spring Framework 4.0为单元测试和集成测试增加了很多新的特性:

几乎所有的spring-test模块里的注解(例如@ContextConfiguration,

@WebAppConfiguration, @ContextHierarchy, @ActiveProfiles等)都可以被当作元注解,去创建定制组合注解,通过一个测试套件(test suite)减少配置重复;

通过实现ActiveProfilesResolver,并通过@ActiveProfiles的resolver属性注册,可以实现自动解析动态类(Active bean definition);

在spring-core模块里引入SocketUtils类,可以扫描本地的TCP和UDP端口。虽然这个功能不是为测试专用,但当在集成测试中需要sockets时被证明是非常有用的。

2.Spring4.1的新特性

1.JAVA消息服务(JMS)改进

Spring 4.1引入@JmsListener来注册JMS监听端(JMS listener endpoints),同时引入XML空间jms:annotation-driven来支持此样式。使用JmsListenerConfigurer也可以注册监听端。

在Spring 4.0中引入的spring-messaging在4.1中也同样受益:受益于标准消息注解@Payload, @Header, @Headers, and @SendTo,可以实现消息监听端的数字签名。

Spring4.1中有了其它多方面的改进:

用JmsTemplate支持异步请求-回答操作;

通过<jms:listener/>属性可以指定监听优先级;

通过实现BackOff可以配置消息监听模式的恢复选项。

Spring mvc 4系列教程(三)—— Spring4.X的新特性的更多相关文章

  1. ASP.NET 5系列教程 (一):领读新特性

    近期微软发布了ASP.NET 5.0,本次发布的新特性需求源于大量用户的反馈和需求,例如灵活的跨平台运行时和自主部署能力使ASP.NET应用不再受限于IIS.Cloud-ready环境配置降低了云端部 ...

  2. Spring mvc 4系列教程(一)

    一.Spring框架概览 Spring框架是一种轻量级.一站式解决企业级应用的解决方案.不仅如此,Spring的模块化的特点,可以使你只引用所需要的部分,而无需引用全部.你可以使用控制反转容器(IoC ...

  3. Spring mvc 4系列教程(二)——依赖管理(Dependency Management)和命名规范(Naming Conventions)

    依赖管理(Dependency Management)和命名规范(Naming Conventions) 依赖管理和依赖注入(dependency injection)是有区别的.为了将Spring的 ...

  4. CRL快速开发框架系列教程三(更新数据)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  5. Android Studio系列教程三--快捷键

    Android Studio系列教程三--快捷键 2014 年 12 月 09 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处!http://stormzhang.com/ ...

  6. ASP.NET MVC 入门系列教程

    ASP.NET MVC 入门系列教程 博客园ASP.NET MVC 技术专题 http://kb.cnblogs.com/zt/mvc/ 一个居于ASP.NET MVC Beta的系列入门文章,有朋友 ...

  7. NGUI系列教程三

    接下来我们再来看Progress Bar和Slider,对比参数我们可以发现,Progress Bar和slider的明显区别在于slider多一个Thumb选项,这里的Thumb就是我们拖动的时候点 ...

  8. 黄聪:Microsoft Enterprise Library 5.0 系列教程(三) Validation Application Block (高级)

    原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(三) Validation Application Block (高级) 企业库验证应用程序模块之配置文件模式: ...

  9. 黄聪:Microsoft Enterprise Library 5.0 系列教程(三) Validation Application Block (初级)

    原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(三) Validation Application Block (初级) 企业库提供了一个很强大的验证应用程序模 ...

随机推荐

  1. DC画线

    CClientDC hdc(this);//获取DC CPen pen(PS_SOLID,4,RGB(255,0,0));//创建一支红笔 CPen * pOldPen=hdc.SelectObjec ...

  2. sys/time.h 和 time.h

    今天在燕麦工作第二天.看荣哥给我的程序,发现程序里面用的延时跟我以前使用的不同.导入两个头文件,然后用函数来获得时间.关于这个函数特别查来一下. time.h  是ISO C99 标准日期头文件. s ...

  3. 使用freemarker导出word

    最近需要将jsp部分页面导出为word文件,环境是Spring+SpringMVC+Hibernate. 我使用的是FreeMarker模板引擎来完成.这是FreeMarker的中文参考手册,感兴趣的 ...

  4. kettle学习

    数据etl工具,主要用做数据采集和清洗 待续...

  5. AngularJS 启动执行过程

    一.浏览器下载HTML/CSS/JavaScript等 当你转到一个页面地址后,浏览器先回下载这个HTML,同时,会开启一些辅助线程下载所关联的script标签和link标签里引用的文件. 二.浏览器 ...

  6. [leed code 179] Largest Number

    1 题目 Given a list of non negative integers, arrange them such that they form the largest number. For ...

  7. 合成的默认构造函数定义为delete的一种情况(针对C++11标准)

    1. 默认初始化 如果定义变量时没有指定初值,则变量会被默认初始化,此时变量被赋予了"默认值". 对于类类型的变量来说,初始化都是依靠构造函数来完成的.因此,即使定义某个类的变量( ...

  8. 【推荐】介绍两款Windows资源管理器,Q-Dir 与 FreeCommander XE(比TotalCommander更易用的免费资源管理器)

    你是否也像我一样,随着硬盘.文件数量的增加,而感到对于文件的管理越来越乏力. 于是我试用了传说中的各种软件,包括各种Explorer外壳,或者第三方资源管理器. 最后我确定下来经常使用,并推荐给您的是 ...

  9. asp.net mvc 配置ckeditor4.x

    下载地址:https://ckeditor.com/ckeditor-4/download/ 一.使用方法: 1.在页面中引入ckeditor核心文件ckeditor.js 2.在使用编辑器的地方插入 ...

  10. golang简单实现jwt验证(beego、xorm、jwt)

    程序目录结构 简单实现,用户登录后返回一个jwt的token,下次请求带上token请求用户信息接口并返回信息. app.conf文件内容(可以用个beego直接读取里面的内容)写的是一个jwt的se ...