Spring AOP 原理:JDK动态代理
动态代理实现原理:一个实现接口的类可以做动态代理。我们需要实现的步骤是:
首先再写一个方法实现一个InvocationHandler接口,方法调用会被转发到该类的invoke()方法。
然后在需要使用Hello的时候,通过JDK动态代理获取Hello的代理对象。
以上是JDK动态代理的实现,我们在实现了invocationhandler接口的invoke方法中可以实现我们的逻辑操作,类中需要接口引用,带有接口引用为参数的有参构造方法,重写invoke方法
在我们需要代理的时候写入这些代码
Proxy.newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler handler)
参数1,实现接口也就是代理对象的类加载器
参数2,实现的接口
参数3,实现invocationhandler接口的类
因此,JDK代理会把所有实现接口的方法转发到invocationhandler中的invoke方法中,我们可以在这里实现任何的逻辑要求
AOP使用场景概述:
Persistence 持久化
Synchronization 同步
Transactions 事务
Spring IOC和SpringDI原理:Java反射
IOC容器通过Java反射技术利用Java注解(Autowired和Resource)根据配置文件初始化对象注入到类中
IOC初衷:为了解耦
依赖注入(DI)和控制反转(IOC)是从不同的角度的描述的同一件事情,就是指通过引入IOC容器,利用依赖关系注入的方式,实现对象之间的解耦。
依赖注入(DI)和控制反转(IOC)是从不同的角度的描述的同一件事情,就是指通过引入IOC容器,利用依赖关系注入的方式,实现对象之间的解耦。
SpringIOC其实是IOC思想的一种实现
参考博文: