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

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的更多相关文章

  1. Spring 4.3.11.RELEASE文档阅读(二):Core Technologies_IOC

    在看这部分内容的时候,想了一些问题: 容器: 1,什么是容器 用来包装或装载物品的贮存器 2,容器能做什么 包装或装载物品 3,为什么需要容器 为什么要使用集装箱?如果没有容器会是什么样? 4,常见的 ...

  2. Spring 4.3.11.RELEASE文档阅读(二):Core Technologies_AOP

    虽然并不是每个问题都有答案,但我想了很多问题.so, just write it down , maybe one day...... AOP: 1,AOP是啥 2,AOP思想是怎么产生的 3,AOP ...

  3. 转:苹果Xcode帮助文档阅读指南

    一直想写这么一个东西,长期以来我发现很多初学者的问题在于不掌握学习的方法,所以,Xcode那么好的SDK文档摆在那里,对他们也起不到什么太大的作用.从论坛.微博等等地方看到的初学者提出的问题,也暴露出 ...

  4. Spring Boot项目使用Swagger2文档教程

    [本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究.若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!] 前言 Sprin ...

  5. Node.js的下载、安装、配置、Hello World、文档阅读

    Node.js的下载.安装.配置.Hello World.文档阅读

  6. 我的Cocos Creator成长之路1环境搭建以及基本的文档阅读

    本人原来一直是做cocos-js和cocos-lua的,应公司发展需要,现转型为creator.会在自己的博客上记录自己的成长之路. 1.文档阅读:(cocos的官方文档) http://docs.c ...

  7. Keras 文档阅读笔记(不定期更新)

    目录 Keras 文档阅读笔记(不定期更新) 模型 Sequential 模型方法 Model 类(函数式 API) 方法 层 关于 Keras 网络层 核心层 卷积层 池化层 循环层 融合层 高级激 ...

  8. Spring Boot:整合Swagger文档

    综合概述 spring-boot作为当前最为流行的Java web开发脚手架,越来越多的开发者选择用其来构建企业级的RESTFul API接口.这些接口不但会服务于传统的web端(b/s),也会服务于 ...

  9. Django文档阅读-Day1

    Django文档阅读-Day1 Django at a glance Design your model from djano.db import models #数据库操作API位置 class R ...

随机推荐

  1. 实现strcpy函数

    不使用库函数,实现strcpy函数: char *my_strcpy(char *t,char *s){ char *strDest=t; if(t==NULL && s==NULL) ...

  2. JavaScript_9_循环

    1. JavaScript for/in 语句循环遍历对象的属性: 可以遍历数组,也可以遍历一个对象的所有属性 <body> <p>点击按钮,循环遍历对象“person”的属性 ...

  3. javaSe-反射3

    package com.java.chap07.sec04; public class Student { private String name; private Integer age; publ ...

  4. Java的三大特性之继承

    此处我会分为这几个部分来理解继承是怎么样的: 1.区分封装.继承和多态 2.区分限定词的范围 3.区分隐藏.覆盖.重载 4.继承的理解 5.一道面试题的原型 --------------------- ...

  5. [Docker] Docker安装和简单指令

    Docker笔记 安装 sudo apt install docker.io 启动和关闭Docker服务 # 启动Docker服务 sudo service docker start # 关闭Dock ...

  6. CPP-基础:有关调用约定

    在C语言中,假设咱们有这样的一个函数:int function(int a,int b) 调历时只有用result = function(1,2)的方法就能利用这个函数.然而,当高档语言被编译成计算机 ...

  7. 数据类型-------JavaScript

    之前只是简单的学过JavaScript和JQuery,虽然一般的要求都能完成,但并没有深入,这次是看了一个网站,很详细的教学,想重新认识一下JavaScript和JQuery. 本文摘要:http:/ ...

  8. 01_11_Strtus2简单数据验证

    01_11_Strtus2简单数据验证 1. 引入struts标签 <%@taglib uri="/struts-tags" prefix="s" %&g ...

  9. Python Web 架构

    1. Django(全能型)2. Tornado3. BottlePython+Bottle+Sina SAE快速构建网站http://www.cnblogs.com/Xjng/p/3511983.h ...

  10. APP上线碰到的问题:Non-public API usage

    ①.Non-public API usage:The app references non-public symbols in XXXX: _UICreateCGImageFromIOSurface ...