SpringIOC(反转是指:我们由对象的控制者变成了 IOC 的被动控制者)
实现机制
反射:通过反射动态的创建类、创建对象实例、调用对象方法
依赖注入:IOC的实现方式,IOC容器用来管理应用程序的依赖关系,spring通过构造器注入、属性注入、方法注入
设计模式--工厂模式:Spring IOC容器采用工厂模式来实例化Bean并管理他们的生命周期,通常使用BeanFactory管理Bean
代理模式:
为其他对象提供一个代理类以控制对某个对象的访问,实现两个类的解耦,委托类和代理类都要实现相同的接口,因为代理类真正要调用的是委托类的方法
静态代理:
由程序员创建,通常代理类只能代理一个类
动态代理:
反射机制生成,可以代理多个实现类
而java的动态代理又分为两种类型
基于接口的代理:实现Proxy接口
基于类的代理(CGLIB):当委托类没有实现接口时,会利用第三方库CGLIB创建一个子类作为代理(继承机制)
SpringAOP
是面向对象编程的一种补充,对于那些强共性的代码,可以采用继承机制,而一些弱共性,AOP可以统一处理
AOP首先在一个Aspect(切面)定义一些advice(增强方法),同时整理了PointCut(切入点),切入点的粒度为方法,最后将这些advice穿插进去实现方法的增强!如日志记录、事务管理
实现原理
通过动态代理(在运行时运用反射机制动态创建代理对象,主要用于在不修改原始类代码的情况下对方法调用进行拦截和增强)