一、宏观概述中的体会和发现

Spring是组件式的框架,它允许我们只使用其一小部分。Spring所做的工作,就是不断的简化我们的操作。比如它的IOC容器,当我们自己应用设计模式,比如说:建造者、工厂、单例等,也可以实现IOC的功能,但正如Spring的使命一样:它帮我们进行封转简化,我们只需要关注业务逻辑实现!

由于我个人也是个java EE的guardians,我一个很深的体会就是:关于java EE的各种规范的实现和集成,Spring都有一个统一的入口去找到它,并且提供了对应的demo工程,而对于java EE技术栈来说,我,至今未能找到这么一个入口!  很多人说Spring是个轻量级的框架,做不了企业级的应用开发,但首先是Spring也支持企业级应用开发了,其次是随着RPC-RMI-SOA-JMS等的发展,我们真的还需要一个庞然大物吗?

可是,我为什么依然使用java EE技术栈呢?  I am thinking

1,测试  TestNG:Spring不仅集成了Junit,更集成了TestNG

2,命名缩写Spring-*:当使用* 代替具体的包时,会根据使用情况,下载对应的jar包

3,统一版本:Spring-framework-bom:当我们在使用Spring时,可能会出现所定义的jar version不一致,导致jar冲突。Spring-framework-bom相当于maven的pom工程,在bom包中定义版本,其他任何关于Spring的依赖,均可不必指定版本。

4,spring-core:唯一依赖Commons-logging的组件。如果要禁用Commons-logging,在此包使用exclusions去除依赖,并添加能够实现JCL API的包。如果要使用Commons-logging,可以直接指定scope为runtime。

注意:1,如果使用类似于SLF4J去实现JCL API,那我们可能还需要引入一个桥梁性质的包去连接JCL;而由于SLF4J依赖绑定log4j,所以我们需要提供3个依赖包:JCL-over-slf4j、slf4j-log4j12、log4j。2,logback实现了SLF4J,所以可以仅使用JCL-over-slf4j、logback-classic

二、Spring4版本变更的总体说明

Spring版本主要变更:2004年,第一个版本发布;Spring 2.0提供XML命名空间和AspectJ支持;Spring2.5拥抱注解驱动;Spring3.0在其框架中应用java 5+的强特性,比如:基于java @Configuration模型;Spring4.0首次全面支持java 8特性(当使用Spring4的时候,java最低版本为 java 6)

Spring4.0 做了什么:

1,增强了学习Spring的体验度:除了文档中有详细介绍,并且有网站提供了很多基于Spring的学习项目

2,移除了所有Deprecated包和方法,并且所有第三方依赖包所使用的版本,都最少是2010年后发布的,必须注意的是:Spring4 使用Hibernate validator4.3+ ,支持Jackson2.0+ (Jackson1.8/ 1.9在Spring3.2时支持,现在已经废弃)

3,Spring4 仍然支持java 6,但推荐使用java 7或者java 8

4,核心容器功能增强:将泛型视作规范的格式;CGLIB代理不要需要默认的构造方法;注入时可以使用@Lazy注解;当Beans被注入到lists或者arrays时,Beans可以被排序,注解@Order和@Ordered

5,Web普遍增强:保留对于Servlet2.5的支持,但Spring4关注Servlet3.0+环境。 如果需要使用Spring MVC 测试框架,必须确认Servlet3.0环境;可以使用@RestController注解去避免每个@RequestMapping方法都使用@ResponseBody;增加AsyncRestTemplate类,允许Rest客户端非阻塞异步调用

6,支持WebSocket,SockJS,和STOMP消息

7,提升测试功能

Spring4.1增强了那些功能:

1,增强JMS:异步请求操作支持JmsTemplate;监听者优先级配置<jms: listener>;消息监听者容器配置覆盖BackOff ;支持JMS2.0消费者共享......

2,增强Caching:运行时缓存解析 CacheResolver,不再强制要求定义缓存结果的value参数;更多缓存配置:resolver、manager、generator;缓存异常捕捉CacheErrorHandler......

3,增强Web:Jackson中@JsonView直接支持序列化,等价于@ResponseBody和ResponseEntity;Jackson对于Jsonp支持;controller生命周期可配;3种新的HttpMessageConverter选项配置......

4,增强WebSocket消息:SockJS客户端支持;WebSocket新增scope选项;STOMP/WebSocket监控信息集成和记录;消息优化......

5,增强测试

spring4.2、Spring4.3增强功能 略述,自己看文档吧!

最新文章

  1. 《编写可维护的JavaScript》——JavaScript编码规范(二)
  2. 老男孩python自动化运维作业2
  3. Delphi与Qt在Windows下使用共享内存进程间通信
  4. leetcode@ [208] Implement Trie (Prefix Tree)
  5. Android得知Scroller(两)——ViewGroup转让scrollTo()
  6. linux命令chown和chmod什么区别
  7. NLP+词法系列(二)︱中文分词技术简述、深度学习分词实践(CIPS2016、超多案例)
  8. 阿里云服务器ssh经常一段时间就断掉解决办法
  9. MVC模式和Django中的MVT模式
  10. openjdk8源码编译
  11. 1T硬盘获3T体验 彻底解决NVR存储时间短的问题
  12. CentOS7最小化安装-Linux-1
  13. linux下使用ack进行代码搜索
  14. [Ubuntu] 关于使用 root 账号登录
  15. SQL Cursor 基本用法[用两次FETCH NEXT FROM INTO语句?]
  16. 【洛谷】【线段树】P1886 滑动窗口
  17. Python开发基础-Day14正则表达式和re模块
  18. SourceInsight,Understand,SecureCRT设置
  19. SDUT OJ 螺旋矩阵
  20. [luogu4161 SCOI2009]游戏 (DP)

热门文章

  1. LeetCode Min Stack 最小值栈
  2. UVA 1471 Defense Lines 防线 (LIS变形)
  3. Redis五种数据结构解析
  4. javaweb基础(16)_jsp指令
  5. 汉明码(Hamming Code)原理及实现
  6. C# 替换去除HTML标记方法(正则表达式)
  7. webservice基础
  8. 禅与 Objective-C 编程艺术(Zen and the Art of the Objective-C Craftsmanship)
  9. TCP/IP协议头部结构体
  10. 【转】MFC 程序入口和执行流程