springIOC概念和原理:
控制反转,把对象创建和对象之间的调用过程,交给Spring进行管理
使用IOC目的:为了耦合度降低
IOC思想是基于IOC容器完成,IOC容器底层就是对象工厂。
Spring提供了IOC容器2中实现方式:(俩个接口)
BeanFactory:IOC容器基本实现,是Spring内部使用的一个使用接口,不提供开发人员使用 。
加载配置文件的时候不会创建对象,在获取对象(使用)才去创建对象
ApplicationContext:BeanFactory接口的一个子接口,提供更多更强大的功能,一般有开发人员进行使用。
IOC底层原理
FileSystemXmlApplicationContext是一路径的来进行解析的
ClassPathXmlApplicationContext是用路径来解析的
AOP底层原理
AOP底层使用动态代理
俩种情况动态代理
第一种是接口情况,使用JDK动态代理
创建接口实现类代理对象,增强类的方法。
IOC操作Bean管理(基于XML方式)
如:
在Spring配置文件中,使用bean标签,标签里面添加对应属性,就可以实现对象创建
在bean标签有很多属性,比如id属性唯一标识,class属性是类全文路径
创建对象时候,默认也是执行无参构造器方法完成对象 创建
第二种情况没有接口情况,使用CGLIB动态代理
创建子类的代理对象,增强类的方法。
JDK动态代理使用Proxy类里面的方法创建代理对象
调用Proxy里面的new ProxyInstance方法
方法中有是哪个参数 :
类加载器 增强方法所在的类,这个类实现的接口,支持多个接口 实现这个接口InvocationHandler,创建代理对象,写增强的方法