springIOC概念和原理:

控制反转,把对象创建和对象之间的调用过程,交给Spring进行管理

使用IOC目的:为了耦合度降低

IOC思想是基于IOC容器完成,IOC容器底层就是对象工厂。

Spring提供了IOC容器2中实现方式:(俩个接口)

BeanFactory:IOC容器基本实现,是Spring内部使用的一个使用接口,不提供开发人员使用 。

加载配置文件的时候不会创建对象,在获取对象(使用)才去创建对象

ApplicationContext:BeanFactory接口的一个子接口,提供更多更强大的功能,一般有开发人员进行使用。

spring怎么将ioc和aop结合 spring实现ioc和aop原理_java


IOC底层原理

spring怎么将ioc和aop结合 spring实现ioc和aop原理_java_02


spring怎么将ioc和aop结合 spring实现ioc和aop原理_java_03


FileSystemXmlApplicationContext是一路径的来进行解析的

spring怎么将ioc和aop结合 spring实现ioc和aop原理_spring怎么将ioc和aop结合_04


ClassPathXmlApplicationContext是用路径来解析的

spring怎么将ioc和aop结合 spring实现ioc和aop原理_spring怎么将ioc和aop结合_05


AOP底层原理

AOP底层使用动态代理

俩种情况动态代理

第一种是接口情况,使用JDK动态代理

创建接口实现类代理对象,增强类的方法。

IOC操作Bean管理(基于XML方式)

如:

spring怎么将ioc和aop结合 spring实现ioc和aop原理_创建对象_06

在Spring配置文件中,使用bean标签,标签里面添加对应属性,就可以实现对象创建

在bean标签有很多属性,比如id属性唯一标识,class属性是类全文路径

创建对象时候,默认也是执行无参构造器方法完成对象 创建

spring怎么将ioc和aop结合 spring实现ioc和aop原理_spring怎么将ioc和aop结合_07

第二种情况没有接口情况,使用CGLIB动态代理

创建子类的代理对象,增强类的方法。

spring怎么将ioc和aop结合 spring实现ioc和aop原理_动态代理_08


JDK动态代理使用Proxy类里面的方法创建代理对象

调用Proxy里面的new ProxyInstance方法

方法中有是哪个参数 :

类加载器 增强方法所在的类,这个类实现的接口,支持多个接口 实现这个接口InvocationHandler,创建代理对象,写增强的方法