Spring是一个轻量级的IOC和AOP容器框架:
a,轻量级:程序实现不是很复杂,代码不是很多,占用资源不是很多,没有侵入性; b,IOC(Inversion of Control 控制反转):对象创建责任的反转(重点,核心); c, Aop(Aspect Oriented Programming):面向横切面编程,可以进行功能性扩展 d,容器:可以容纳对象,并且可以控制对象的生命周期;复制代码
Sping框架的优缺点:
优点:
-
轻量级的容器框架,没有侵入性
-
IoC更加容易组合对象之间的关系,通过面向接口进行编程,可以低耦合开发。
-
易于本地测试(Junit单元测试,不用部署服务器)
-
AOP可以更加容易的进行功能扩展,遵循OCP开发原则。
-
Spring默认对象的创建为单例的,我们不需要再使用单例的设计模式来开发单体类。
-
Spring的集成很强大,另外可以对其他框架的配置进行一元化管理。
-
Spring的声明式事务的方便使用。
缺点:
- 开发对设计要求较高,集成测试麻烦,对框架有一定的依赖性。
IOC原理
- 是一种面向对象设计模式的思想,将创建对象的过程由IOC容器管理
- 构造器注入
- setter方法注入
AOP原理
- AOP的源码中用到了两种动态代理来实现拦截切入功能:jdk动态代理和cglib动态代理。
- jdk动态代理是由java内部的反射机制来实现的,cglib动态代理底层则是借助asm来实现的
- CGLIB 代理:静态代理和动态代理模式都是要求目标实现一个接口的目标对象,但是有时候目标对象只是一个单独的对象,并没有实现任何接,这个时候就可以使用以目标对象子类的方式实现代理,这种方法叫做 cglib 代理。