1.Spring简介
1.1spring是什么
Spring 是分层的 full-stack(全栈) 轻量级开源框架,以 IoC 和 AOP 为内核,提供了展现层 SpringMVC 和业务层事务管理等众多的企业级应⽤技术,还能整合开源世界众多著名的第三⽅框架和类库.
1.2spring优势
1.⽅便解耦,简化开发:可以将对象间的依赖关系交由Spring进⾏控制,避免硬编码所造成的过度程序耦合
2.AOP编程的⽀持
3.声明式事务的⽀持
4.⽅便程序的测试
5.⽅便集成各种优秀框架
6.降低JavaEE API的使⽤难度
7.源码是经典的 Java 学习范例
1.3Spring核心架构
如图
Spring最核心的模块如下:
1.Container 模块(对象的创建,管理等)
2.AOP 模块(对象功能的扩展)
3.Data 模块(数据访问功能的整合及实现)
4.Web 模块(网络应用模块整合及实现)
5...........
Spring 中的核心组件:
1.IOC 容器(控制反转容器):对象创建,对象存储,对象依赖管理。
2. MVC 组件(重点解决与表示层通讯的通讯问题)
3. AOP 组件(重点解决对象功能扩展问题)
4.DATA 组件(整合JDBC,MyBatis,JPA,....)
5.......
1.4核心IOC介绍
Spring 中有一个核心容器,这个容器我们通常称之为IOC(Inversion of Control)容器,这个容器最核心功能就是控制反转.这个容器负责对象的创建,对象的存储(map),对象的管理(依赖查找,依赖注入).
为什么叫做控制反转?
控制:指的是对象创建(实例化、管理)的权利
反转:控制权交给外部环境了(spring框架、IoC容器)
优势:
1.更好的使用内存(默认单例管理),防止内存泄露。
2.更好的解耦和(耦合于接口或者耦合于工厂
劣势:
1.我们丧失了⼀个权利(创建、管理对象的权利)
2.构建对象的过程变的复杂,对象结构的可读性降低了
IoC和DI的区别:
OC和DI描述的是同⼀件事情,只不过⻆度不⼀样罢了
IOC思想:站在对象的角度,对象实例化和管理的权限交给了容器
DI:Dependancy Injection(依赖注⼊),站在容器的角度,容器会把对象依赖的其他对象注入进去
1.5AOP简介
AOP是什么: 面向切面编程,它是面向对象编程的一种补充和完善
AOP要解决什么问题:AOP就是要在不改变原有系统核心业务代码的基础上动态添加一些扩展功能
AOP实际项目应用场景:通常应用于日志的处理,事务处理,权限处理,缓存处理等等。
为什么叫做⾯向切⾯编程:
切,指的是横切逻辑,原有业务逻辑代码我们不能动,只能操作横切逻辑代码,所以⾯向横切逻辑
面,横切逻辑代码往往要影响的是很多个⽅法,每⼀个⽅法都如同⼀个点,多个点构成⾯,有⼀个⾯的概念在⾥⾯