IOC底层原理
IOC底层原理分析
·
IOC底层原理
最近开始在学习spring5的源码,对IOC的底层原理有了进一步的了解,框架的形成并不是一蹴而就的,而是通过一定的演变形成。
什么是IOC
1、 控制反转,把对象创建和和现象之间的条用过程,交给spring进行管理,目的就是降低耦合度
2、 底层实现:xml解析、工厂模式、反射
实例
如果userService的execute()想要调用UserDao里面的add()方法,可以有以下几种方法。
(1)最简单的方法就是在UserService中new一个UserDao对象,通过引用来调用方法。这种方法耦合度较高,例如UserDao的路径名修改或者方法改变后,UserService中也要相应的修改,代码维护量大。
(2)工厂模式,通过创建工厂类来实现,此方法虽然降低了UserService和UserDao之间的耦合,但是UserService和UserDao都与工厂类有耦合。如下图
(3)IOC实现过程,这种方式使耦合度进一步降低。
第一步:配置xml文件,配置创建的对象
<bean id="dao" class="com.cxr.UserDao"></bean>
第二步: 有service类和dao类,创建工厂类
Class UserFactory{
public static UserDao getDao(){
String classValue=class属性值; //xml解析,这里得到的是com.cxr.UserDao全路径名
//通过反射创建对象
Class class=Class.forName(classValue);
return (UserDao)class.newInstance(); //创建对象并返回
}
}
3、 IOC接口
1、 IOC思想基于IOC的容器完成,IOC容器底层就是对象工厂
2、 Spring提供IOC容器实现两种方式:(两个接口)
(1)BeanFactory:IOC容器基本实现,是Spring内部使用接口,不提供开发人员进行使用,加载配置文件时候不会创建对象,在获取对象才去创建对象。
(2)ApplicationContext:BeanFactory接口的子接口,提供更多更强大的功能,一般由开发人员进行使用,加载配置文件时候就会把配置文件对象进行创建。一般都会使用ApplicationContext来实际开发,因为对象创建这种费时费资源的事情最好在项目启动时就完成。当然ApplicationContext和BeanFactory里面也有很多的实现类,感兴趣的可以自己去看看。
刚开始写博客,懂的知识也不多,只能边学边写来加深印象,有什么补充和想法可以在评论区讨论哦
更多推荐
已为社区贡献1条内容
所有评论(0)