Spring 官网为: spring.io 多打几遍就记住了哈
(1) 春天来了—— Spring 来了!
Spring 在起源可以回溯到 Rod Johnson 编写的“ Expert One-to-One J2EE Design and Development ”一书 (Wrox , 2002) 。在这本书中, Rod 展示了他的interface21
框架,他为自己的应用编写了这一框架。这一框架被发布到开源世界后,组成了现在我们所知的 Spring 框架的基础。
Spring 在早期的 beta 和发布备选版本阶段进行得很迅速,第一个正式版本 1.0 在 2004 年 3 月 24 日 发布。
(2)What Is Spring(Spring 是什么 ) ?
或许解释清楚 Spring 技术到底是什么会很困难。通常, Spring 是指一个用于构造JAVA 应用程序的轻量级框架
,但这句话包含两个有趣的地方。首先,你可以采用 Spring 来构造任何程序,这一 Apache Struts 这样的框架不同,你不限定于只编写 WEB 应用。其次,以上解释中的“轻量级”并不意味着类数量很少,或者发行包大小很小,实际上,它指的是 Spring 哲学原理的总称——那就是最少的侵入。 Spring 是轻量级的,意味着你只需对你的程序代码做很少改动 ( 假若有的话 ) ,而获得 Spring 核心带来的好处,你也可以在任何时候选择抛弃 Spring ,你会发现这实在很容易。注意,上面这句话只针对 Spring 核心本身——很多附加的 Spring 组件,比如数据访问,需要与 Spring 框架有相对紧密得多的耦合关系。但是,这些耦合带来的好处显而易见。
Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。
(3)Spring 版本发展
1、Spring的核心是一个轻量级(Lightweight)的容器(Container)。
2、Spring是实现IoC(Inversion of Control)容器和非入侵性(No intrusive)的框架。
3、Spring提供AOP(Aspect-oriented programming)概念的实现方式。
4、Spring提供对持久层(Persistence)、事物(Transcation)的支持。
5、Spring供MVC Web框架的实现,并对一些常用的企业服务API(Application Interface)提供一致的模型封装。
6、Spring提供了对现存的各种框架(Structs、JSF、Hibernate、Ibatis、Webwork等)相整合的方案。
Spring = IOC+AOP ?
其实刚开始是这样的,只不过随着Spring家族的慢慢庞大,就慢慢多起来了,但核心还是IOC和AOP
Spring的IOC和AOP
可以从上面的链接去看,也可以看下面的简要回答。
为什么使用Spring?
没有Spring的时候我们是如何工作的?
在Web项目中我们都是面相接口进行编程,如UserService接口 要使用
UserService userService=new UserServiceImpl();
我们需要对接口的引用指向他的一个实现,如何UserService在10个地方用,我们需要new 10次,
假如我们有一天因为项目版本迭代,接口的指向变了?那么我们需要在编码中直接进行修改
(有人就说,我直接改代码不就行了?别改代码,只需要添代码,以前所有的老代码,都是有价值的,需要尽力保留)
所以首先在代码中我们要谨慎使用new 关键词,如果有一天版本迭代,你 new 的地方是不是都需要改?
如果不使用new 关键词创建对象,我们该如何去处理这个问题?
那我们使用工厂模式去创建对象,如果我们有需要直接去工厂中去取就可以了
(为了能甩锅,人们发明了「简单工厂模式」,谁实现简单工厂谁背锅){工厂模式解决了复杂的构造逻辑耦合隐藏了创建过程的复杂度}
高耦合的痛苦
这里解决了接口引用变更的问题,不用每一处取修改,只修改工厂就行
那么为了尽量减少牵一发而动全身,工厂模式中创建的对象中需要其他对象的创建也应该使用工厂模式
那么有可能我们需要一个对象就创建了n个工厂
这大大加重了开发复杂性,加重了开发成本
项目经理跟甲方说我们项目可以完成,有两个选择:1.项目工期延长,但是以后需求更改开发周期会变短2.项目按期完成,但以后需求更改开发周期会比较长
甲方会说什么?我要按期执行还要需求更改短
为了快又好,Spring的IOC(对象的构建技术)解决了我们上述的问题
控制反转 代码控制依赖 容器控制依赖
依赖注入 容器动态的将依赖关系注入到组件当中
Spring两大特性:IOC和AOP
他们对应着两个常见问题对象管理和切面编程
1.在没有Spring之前,我们是如何工作的,为什么使用Spring或Spring解决了我们什么样的问题
2.什么是IOC和DI,如何去理解
3.Spring中的配置方式有哪些
4.Spring的xml常见配置
5.Spring的AOP
6.Spring的事务如何配置
7.附录
8.常见问题:
Spring从入门到放弃 - 不完全指南是个人在Java学习中不断总结和一些体会分享给大家,希望转载注明地址。
文章地址:Spring从入门到放弃 - 不完全指南