##3.spring 4.0的新功能和改善 spring框架在2014年收发;到目前为止有这几个主要版本:spring2.0提供了xml命名空间和AspectJ的支持;spring2.5实现了注解驱动配置;spring3.0在代码里引入了强大的java5.0+(1.5,1.6,1.7)的基础;还提供了基于java的@Configuration模式; 4.0版本是spring最新的主要发布版,首次彻底支持java8的特性;你仍是能够用旧版原本支持spring的,但要在jdk1.6以上;咱们还提供了能够删除许多过期类和方法的主要发布版本选项; ###3.1 让获取起步经验更容易 新的 spring 网站提供了一系列的"getting Started"手册帮助你学习spring;你能够从第一章启动spring部分得到更多资料.新网站还对这些在spring框架下的新项目提供了复杂的文档介绍; 若是你是maven用户,那么你可能对bill of materials部分感兴趣,每一个发布版都会有;html
许多过期的包,类,方法已经从4.0版本里删掉了. 若是你要更新你的spring版本,你要保证你能修复全部由咱们定义的过期APIS引发的过期调用问题; 你能够从 API Differences Report获得详细的变动列表 请注意,全部的第三方依赖都必须是2010/2011年以上版本(spring4.0只支持2010版本或更新版本); 尤为,hibernate3.6+,Ehcache 2.1+,Quartz 1.8+,Groovy 1.8+,Joda-Time 2.0+.这里有个例外,spring 4.0要求bibernate验证器要为4.3版本,如今对Jackson的支持要求为2.0+版本;(spring3.2支持1.8/1.9版本,然如今已过期) ###3.3 java8(也有 6和7) spring 4.0 提供了对java8功能的一些支持.你能够再spring回调接口中使用lambda表达式和方法表达式.这里对java.time包((JSR-310)[http://jcp.org/en/jsr/detail?id=310]) 有一流的支持,还把几种已存在的注解改装为@Repeatable注解同样.你还可使用java8的参数名字发现机制(基于参数编译器标志)做为替代项使你在编译期间获取调试信息; 保持对java6,7的兼容,但jdk6要求是 JDK 6 update 18;然仍是建议要8; ###3.4 java EE 6和7 java EE 6是spring框架的最低版,主要是JPA2.0和Servlet3.0规格和它部分关联.为了保持与Google App Engine和旧版本应用容器的兼容性,你能够在Servlet2.5的版本上运行spring4.0的项目.然Servlet 3.0+仍被强烈推荐,他是spring test模块和模仿测试包在开发环境中的先决条件; suggest:若是你使用WebSphere 7,那么你必须安装JPA2.0的功能包.在weblogic 10.3.4或者更高的版本上,JPA2.0已经安装了.因此这两中版本的服务容器都兼容spring4.0的部署环境. 再往前看,spring 4.0支持java EE7的的应用规则:特别是JMS2.0,JTA1.2,Bean Validation 1.1,JSR-236 Concurrency Utilities.一般,它支持各类规范的具体应用.然而,部署在Java EE 7 的服务器上也能运行良好; 只有SPring4.0++才支持hibernate 4.3+和JPA2.0+.这一样适用于Hiberante Validator 5.0 ,Bean Validation 1.1.(这二者没有被Spring 3.2正式支持) ##Groovy Bean Definition DSL(Groovy Bean的定义语句 DSL) 可使用Goovy DSL来定义spring4.0的配置文件.她可使用比xml更简洁的语法.它可使你启动代码变得更容易.例如:java
def reader=new GroovyBeanDefinitionReader(myApplicationContext) reader.beans{ dataSource(BasicDataSource){ driverClassName="org.hsqldb.jdbcDriver" url="jdbc:hsqldb:mem:grailsDB" username="sd" password="" settting=[mynew:"setting"] } sessionFactory(SessionFactory){ dataSource=dataSource } myService(MyService){ nestedBean={AnotherBean bean-> dataSource=dataSource } } }
有如下改善:web
public class Conditoner implement condition{ @Override public boolean matches(ConditionContext context,AnnotatedTypeMedtadata metadata){ return .... ; } }
简单使用, 和profile注解效果类似spring
###3.7 web优化 要使用Servlet3.0的包,2.5虽然也能够.但若是你要使用Spring Mvc Test 框架,就必须用Servlet3.0; 除了下文会提到的WebSocket支持外,还有如下改进 - 你能够在springmvc项目使用@RestController注解,它能够去掉你每一个@RequestMapping方法的返回时的@ResponseBody注解;sql