Spring 4.3.11.RELEASE文档阅读(一):overview
一、宏观概述中的体会和发现
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增强功能 略述,自己看文档吧!
Spring 4.3.11.RELEASE文档阅读(一):overview的更多相关文章
- Spring 4.3.11.RELEASE文档阅读(二):Core Technologies_IOC
在看这部分内容的时候,想了一些问题: 容器: 1,什么是容器 用来包装或装载物品的贮存器 2,容器能做什么 包装或装载物品 3,为什么需要容器 为什么要使用集装箱?如果没有容器会是什么样? 4,常见的 ...
- Spring 4.3.11.RELEASE文档阅读(二):Core Technologies_AOP
虽然并不是每个问题都有答案,但我想了很多问题.so, just write it down , maybe one day...... AOP: 1,AOP是啥 2,AOP思想是怎么产生的 3,AOP ...
- 转:苹果Xcode帮助文档阅读指南
一直想写这么一个东西,长期以来我发现很多初学者的问题在于不掌握学习的方法,所以,Xcode那么好的SDK文档摆在那里,对他们也起不到什么太大的作用.从论坛.微博等等地方看到的初学者提出的问题,也暴露出 ...
- Spring Boot项目使用Swagger2文档教程
[本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究.若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!] 前言 Sprin ...
- Node.js的下载、安装、配置、Hello World、文档阅读
Node.js的下载.安装.配置.Hello World.文档阅读
- 我的Cocos Creator成长之路1环境搭建以及基本的文档阅读
本人原来一直是做cocos-js和cocos-lua的,应公司发展需要,现转型为creator.会在自己的博客上记录自己的成长之路. 1.文档阅读:(cocos的官方文档) http://docs.c ...
- Keras 文档阅读笔记(不定期更新)
目录 Keras 文档阅读笔记(不定期更新) 模型 Sequential 模型方法 Model 类(函数式 API) 方法 层 关于 Keras 网络层 核心层 卷积层 池化层 循环层 融合层 高级激 ...
- Spring Boot:整合Swagger文档
综合概述 spring-boot作为当前最为流行的Java web开发脚手架,越来越多的开发者选择用其来构建企业级的RESTFul API接口.这些接口不但会服务于传统的web端(b/s),也会服务于 ...
- Django文档阅读-Day1
Django文档阅读-Day1 Django at a glance Design your model from djano.db import models #数据库操作API位置 class R ...
随机推荐
- Android商城开发系列(三)——使用Fragment+RadioButton实现商城底部导航栏
在商城第一篇的开篇当中,我们看到商城的效果图里面有一个底部导航栏效果,如下图所示: 今天我们就来实现商城底部导航栏,最终效果图如下所示: 那么这种效果是如何实现,实现的方式有很多种,最常见的就是使 ...
- POJ 2288 Islands and Bridges (状压DP,变形)
题意: 给一个无向图,n个点m条边,每个点有点权,要求找到一条哈密顿路径,使得该路径的f(path)值最大.输出f值,若有多条最大f值的路径,输出路径数量. f值由如下3点累加而来: (1)所有点权之 ...
- 51nod 1572 宝岛地图
题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 勇敢的水手们到达了一个小岛,在这个小岛上,曾经有海盗在这里埋下了一些宝藏.然而,我 ...
- Round #322 (Div. 2) 581D Three Logos (模拟)
先枚举两个矩形,每个矩形横着放或竖着放,把一边拼起来, 如果不是拼起来有缺口就尝试用第三个矩形去补. 如果没有缺口就横着竖着枚举一下第三个矩形和合并的矩形x或y拼接. #include<bits ...
- python 与 json
+-------------------+---------------+ | Python | JSON | +================= ...
- Bootstrap历练实例:向列表组添加内容
向列表组添加自定义内容 我们可以向上面已添加链接的列表组添加任意的 HTML 内容.下面的实例演示了这点: <!DOCTYPE html><html><head>& ...
- iOS 解决ipv6问题
解决ipv6的方法有很多种,由于现在国内的网络运营商还在使用ipv4的网络环境,所以appstore应用不可能大范围去修改自己的服务器, 而且国内的云服务器几乎没有ipv6地址. 这里附上苹果开发平台 ...
- cnpm 莫名奇妙bug 莫名奇妙的痛
cnpm 莫名奇妙bug 莫名奇妙的痛 最近想搭建react@v16 和 react-router@v4,搭建过程打算用vue脚手架webpack模板那套配置方法(webpack3). 由于我之前安装 ...
- 『jQuery』.html(),.text()和.val()的概述及使用--2015-08-11
如何使用jQuery中的.html(),.text()和.val()三种方法,用于读取,修改元素的html结构,元素的文本内容,以及表单元素的value值的方法 本节内容主要介绍的是如何使用jQu ...
- Find the Longest Word in a String-freecodecamp算法题目
Find the Longest Word in a String(找出最长单词) 要求 在句子中找出最长的单词,并返回它的长度 函数的返回值应该是一个数字. 思路 用.split(' ')将句子分隔 ...