IoC和AOP
一、IoC
什么是IoC:控制反转(Inversion of Control),又称为依赖注入(Dependency Injection),把创建对象的控制权交出去,从主动创建对象变为被动接受对象。具体的说就是,在传统的程序设计中,如果在web层要调用service层的方法,就必须在web层主动创建service层实现类对象,但是在spring中,创建对象的工作不再由调用者主动完成,而是把创建对象的控制权交给spring的bean工厂, 调用者只负责接收这个对象。
IoC的作用:实现解耦,更准确的说是实现了编译期解耦,还存在运行期解耦。实现运行期解耦可以引入配置文件对依赖对象的路径进行配置。
二、AOP
- 什么是AOP:面向切面编程(Aspect-Oriented Programming),把指定的逻辑代码动态的切入到指定的位置上的编程思想。例如,在项目中有200个方法需要进行事务管理,或者200个方法需要日志打印,如果传统的方法,我们可能要在这200个方法上分别加入对应的逻辑代码,而如果需要调整那就要再修改200次,过于繁琐。而如果利用AOP的思想,那就只需要把这些相同的代码剥离出来,放到同一个类中进行集中管理。在运行时由spring容器动态切入这些代码。
- AOP的原理:通过动态代理的方式,在不影响原有功能的基础上,对功能进行增强、控制
- 常见的名词
- 切入点(PointCut):所有能够进行增强的方法,所有的切入点都会得到通知,不同的切入点得到的通知不同(根据正则表达式实现)
- 通知(Advice):要给目标对象进行增强、控制的逻辑代码
- 切面(Aspect):切入点和通知的结合/共有功能的实现/被增强了的切入点方法