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. 笔记 Bioinformatics Algorithms Chapter1

    Chapter1 WHERE IN THE GENOME DOES DNA REPLICATION BEGIN    一. ·聚合酶启动结构域会结合上游序列的一些位点,这些位点有多个,且特异,并且分布 ...

  2. kepware http接口 OCaml

    读取某变量的值 open Cohttp_lwt_unix open Cohttp open Lwt let uri = Uri.of_string "http://127.0.0.1:393 ...

  3. kepware http接口 nodejs开发

    读取某变量的值(native var http = require("http"); var options = { "method": "GET&q ...

  4. Spring的两种代理JDK和CGLIB的区别浅谈

    一.原理区别: java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理. 而cglib动态代理是利用asm开源包,对代理对象类的class文件 ...

  5. IT项目管理流程以及每个步骤用到的文档

    IT项目管理从大的方面可分为:1)项目启动阶段:2)项目计划阶段:3)项目的实施阶段:4)项目的结项阶段 1)项目启动阶段: 1.项目启动流程规范: 1.1项目启动的简介.目的和范围 1.2目的可行性 ...

  6. CUDA cufftPlanMany的用法_31通道32*8像素的FFT

    #include <cufft.h> #include <iostream> #include <cuda_runtime.h> #include <help ...

  7. list列表常用操作

    1.创建列表.只要把逗号分隔的不同的数据项使用方括号括起来即可 List = ['wade','james','bosh','haslem'] 2.使用 range() 创建数字列表 numbers ...

  8. spring mvc请求过程

    spring mvc处理请求过程 1.    首先客户端发送一个HTTP请求,Web服务器接收这个请求,如果匹配DispatcherServlet的请求映射路径,web容器将请求转交给Dispatch ...

  9. CentOS 7配置Let’s Encrypt支持免费泛域名证书

    Let’s Encrypt从2018年开始支持泛域名证书,有效期3个月,目前仅支持acme方式申请,暂不支持certbot. 1.安装acme.sh curl https://get.acme.sh ...

  10. wpf 的依赖属性只能在loaded 事件之后才能取到

    wpf 的依赖属性只能在loaded 事件之后才能取到,在构造函数的  InitializeComponent(); 之后取不到 wpf 的依赖属性只能在loaded 事件之后才能取到,在构造函数的  ...