Spring 4.1目前已经发布RC1版本,而GA版本预计在14年9月中旬发布;其中有部分内容直接借鉴自Spring Boot,而Spring Boot从目前趋势来看已经是Spring的顶级项目;另外也提供了页面自动化测试框架Spring MVC Test HtmlUnit,和Spring MVC Test一样先是独立项目,如果发展态势很好,会最终合并到Spring Framework中。
从目前来看Spring 4.1并没有特别吸引眼球的地方,主要还是增强和一些依赖的版本升级。主要改进如下:
核心部分基本上无变化,提供了DirectFieldAccessor用于直接字段访问、yaml配置、SpEL的字节码编译化、BackOff退避算法的基本实现、Base64Utils、SmartInitializingSingleton等;
在任务调度和事件机制上加入了异常处理部分;
cache部分加入jcache的集成、类级别的@CacheConfig的支持、CacheResolver;
mvc部分提供了一些视图解析器的mvc标签实现简化配置、提供了GroovyWebApplicationContext用于Groovy web集成、提供了Gson、protobuf的HttpMessageConverter、静态资源处理方面添加了resolver和transformer、提供了对groovy-templates模板的支持、JSONP的支持、对Jackson的@JsonView的支持等;
提供了页面自动化测试框架Spring MVC Test HtmlUnit;
test部分提供了更便利的@sql标签来执行测试脚本的初始化、MockRestServiceServer对AyncRestTemplate支持、MockMvcConfigurer来全局配置MockMvc;
提供了对Java 8 Optional的支持(ObjectToOptionalConverter实现;可以在MVC中如@RequestParam等注解的绑定)、从Spring 4.1起Ehcache支持需要EhCache 2.5或更高版本、兼容Quartz 2.1.4、支持javax.annotation.Priority(等价于@Order)、JMS API的增强、SpringJUnit4ClassRunner需要 JUnit 4.9或更高版本支持。
从目前发展来看Spring把重点放在了Spring Boot上,另一方面Spring体系太庞大,要寻找和添加依赖,及选择版本特别麻烦,而且容易产生版本冲突等,因此又诞生了Spring IO Platform,如果用过maven的话,相当于给你很多默认依赖,然后需要的时候直接添加即可,无需指定版本。
从如上可以看出,吸引人的新特性很少,另外目前还不稳定,API异变,功能有BUG,如果没有把控能力,不建议把新特性用于新项目,后续部分我会按照如下几部分讲解Spring4.1新特性:
Spring核心部分及其他
Spring缓存框架增强
异步调用和事件机制的异常处理
数据库集成测试脚本初始化
Spring MVC增强
页面自动化测试框架Spring MVC Test HtmlUnit简介
静态资源处理增强
目前给我的印象是Spring Framework已经非常庞大,基本使用还是比较简单,而且如果深入下去基本上我们需要的功能都可以进行扩展,这也是最佩服它的一点,目前给我最不好的就是Java Config和XML Config都支持,会给人一种混乱的感觉;其实最好把这种配置也单独提取到一个项目中。因为我在测试Spring 4.1时遇到过在Java Config下好用,而XML Config下实现错误。从目前发展态势来看,
推广它们的Groovy;
微服务;
周边的各种生态集成;
目前最需要解决的就是简化使用;功能太多造成学习成本也高了,会吓跑一些人。用好了Spring生态系统,工作起来真的是很得心应手。
依赖:
使用4.1.0.BUILD-SNAPSHOT,请使用Spring官方maven仓库下载依赖。
Java代码
<repositories> <repository> <id>spring-milestone</id> <url>https://repo.spring.io/libs-milestone</url> </repository> <repository> <snapshots><enabled>true</enabled></snapshots> <id>repository.spring.snapshot</id> <name>Spring Snapshot Repository</name> <url>http://repo.spring.io/snapshot</url> </repository> </repositories>
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756
相关文章
发现更多好内容- 如何避免 Java 线程安全中的死锁?(Java线程安全怎样避免死锁)
- Java 递归函数调用的具体方法有哪些?(java递归函数调用的方法是什么)
- 如何在 scheduleatfixedrate 中有效地实现任务的动态调度?(如何在scheduleatfixedrate中实现任务的动态调度)
- 如何在 Java 中轻松创建多线程?(如何在Java中创建多线程)
- Java 中 String 转 Long 对新手友好吗?(java string转long对新手友好吗 )
- 如何在 Java 窗口中添加文本框?(java怎么在窗口中加入文本框)
- 在 Java 中,package 究竟该如何使用呢?(java中package如何使用)
- 如何通过 JavaScript 异步编程有效避免回调地狱?(JavaScript异步编程如何避免回调地狱)
- 在 JavaScript 中,split 方法究竟该如何使用?(split方法在javascript中怎么用)
- 如何解决 java log4j2 的安全漏洞?(java log4j2安全漏洞解决方案)