第⼀部分 Spring 概述
第1节 Spring 简介
Spring
是分层的
full-stack
(全栈) 轻量级开源框架,以
IoC
和
AOP
为内核,提供了展现层
Spring MVC 和业务层事务管理等众多的企业级应⽤技术,还能整合开源世界众多著名的第三⽅框架和类库,已 经成为使⽤最多的 Java EE
企业应⽤开源框架。 Spring 官⽅⽹址:
http://spring.io/
我们经常说的 Spring
其实指的是
Spring Framework
(
spring
框架)
第2节 Spring 发展历程
- 1997年 IBM 提出了EJB的思想; 1998年,SUN 制定开发标准规范EJB1.0; 1999年,EJB 1.1发 布; 2001年,EJB 2.0发布; 2003年,EJB 2.1发布; 2006年,EJB 3.0发布;
- Rod Johnson(spring之⽗)
- Expert One-to-One J2EE Design and Development(2002) 阐述了J2EE使⽤EJB开发设计的优 点及解决⽅案
- Expert One-to-One J2EE Development without EJB(2004) 阐述了J2EE开发不使⽤EJB的解决 ⽅式(Spring雏形)
2017
年
9
⽉份发布了
Spring
的最新版本
Spring 5.0
通⽤版(
GA
)
第3节 Spring 的优势
整个 Spring 优势,传达出⼀个信号, Spring 是⼀个综合性,且有很强的思想性框架,每学习⼀天,就能体会到它的⼀些优势。
- ⽅便解耦,简化开发
通过
Spring
提供的
IoC
容器,可以将对象间的依赖关系交由
Spring
进⾏控制,避免硬编码所造成的 过度程序耦合。⽤户也不必再为单例模式类、属性⽂件解析等这些很底层的需求编写代码,可以更
专注于上层的应⽤。
- AOP编程的⽀持
通过
Spring
的
AOP
功能,⽅便进⾏⾯向切⾯的编程,许多不容易⽤传统
OOP
实现的功能可以通过 AOP轻松应付。
声明式事务的⽀持
- @Transactional
可以将我们从单调烦闷的事务管理代码中解脱出来,通过声明式⽅式灵活的进⾏事务的管理,提⾼ 开发效率和质量。
- ⽅便程序的测试
可以⽤⾮容器依赖的编程⽅式进⾏⼏乎所有的测试⼯作,测试不再是昂贵的操作,⽽是随⼿可做的事情。
- ⽅便集成各种优秀框架
Spring
可以降低各种框架的使⽤难度,提供了对各种优秀框架(
Struts
、
Hibernate
、
Hessian
、 Quartz等)的直接⽀持。
- 降低JavaEE API的使⽤难度
Spring
对
JavaEE API
(如
JDBC
、
JavaMail
、远程调⽤等)进⾏了薄薄的封装层,使这些
API
的使⽤难度⼤为降低。
- 源码是经典的 Java 学习范例
Spring
的源代码设计精妙、结构清晰、匠⼼独⽤,处处体现着⼤师对
Java
设计模式灵活运⽤以及对 Java技术的⾼深造诣。它的源代码⽆意是
Java
技术的最佳实践的范例。
第4节 Spring 的核⼼结构
Spring
是⼀个分层⾮常清晰并且依赖关系、职责定位⾮常明确的轻量级框架,主要包括⼏个⼤模块:数据处理模块、Web
模块、
AOP
(
Aspect Oriented Programming
)
/Aspects
模块、
Core Container
模块 和 Test
模块,如下图所示,
Spring
依靠这些基本模块,实现了⼀个令⼈愉悦的融合了现有解决⽅案的零侵⼊的轻量级框架。
第⼆部分 核⼼思想
注意:
IOC
和
AOP
不是
spring
提出的,在
spring
之前就已经存在,只不过更偏向于理论化,
spring
在技 术层次把这两个思想做了⾮常好的实现(Java
)
第1节 IoC
1.1 什么是IoC?
IoC Inversion of Control (
控制反转
/
反转控制
)
,注意它是⼀个技术思想,不是⼀个技术实现
描述的事情:
Java
开发领域对象的创建,管理的问题
传统开发⽅式:⽐如类
A
依赖于类
B
,往往会在类
A
中
new
⼀个
B
的对象
IoC
思想下开发⽅式:我们不⽤⾃⼰去
new
对象了,⽽是由
IoC
容器(
Spring
框架)去帮助我们实例化对
象并且管理它,我们需要使⽤哪个对象,去问
IoC
容器要即可
我们丧失了⼀个权利(创建、管理对象的权利)
,
得到了⼀个福利(不⽤考虑对象的创建、管理等⼀系列事情)
为什么叫做控制反转?
控制:指的是对象创建(实例化、管理)的权利
反转:控制权交给外部环境了(
spring
框架、
IoC
容器)
1.2 IoC解决了什么问题
oC
解决对象之间的耦合问题
1.3 IoC和DI的区别
DI
:
Dependancy Injection
(依赖注⼊)
怎么理解:
IOC
和
DI
描述的是同⼀件事情,只不过⻆度不⼀样罢了
第三部分 ⼿写实现 IoC 和 AOP
总结:
整个资料的文件都总结在PDF文档上面了,上面给大家列举出来的都是PDF文档上面的一部分,需要的朋友可以关注微信公众号【Java程序员聚集地】,免费获取这份spring高级源码笔记。
另外给大家整理了一份千道面试真题,以及大厂面试真题解析,同上关注微信公众号【Java程序员聚集地】获取。
千道面试题:
大厂面试真题解析: