IOC底层原理

本文探讨了Spring的IOC(控制反转)原理,包括降低耦合度的目的、底层实现如XML解析、工厂模式和反射。通过比较传统创建对象的方式与IOC的优势,展示了IOC如何通过配置文件和容器来管理对象。还介绍了BeanFactory和ApplicationContext这两个关键接口及其在对象生命周期中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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里面也有很多的实现类,感兴趣的可以自己去看看。

刚开始写博客,懂的知识也不多,只能边学边写来加深印象,有什么补充和想法可以在评论区讨论哦
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值