IOC容器设计的一些细节解析

IOC容器通过控制反转降低了程序的耦合度,从普通创建对象到工厂模式,再到IOC,主要经历了从代码直接创建到XML配置管理的过程。IOC通过XML解析、工厂模式和反射技术实现,当类路径变化时,只需修改配置文件,无需改动代码。getBean方法用于通过对象的id从容器中获取对象。

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

IOC容器底层原理

什么是IOC

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

  1. 目的是为了使得程序的耦合度降低(统一管理)

演变过程

普通方式–>工厂模式实现–>IOC过程

原始方式

缺点:耦合度过高,如果我在service中使用到了Dao的对象,一旦Dao包的位置发生变化,就要全部都改变。

工厂模式

创建一个工厂专门用来生成对象,就不需要担心其位置会发生变化,只需要改变工厂中的import即可,但仍然存在这个缺点,只是修改的量减小了。

IOC方式

通过修改,将修改限定在xml配置文件内部,xxxFactory类,与使用这个对象的类中的代码都无需修改。

IOC容器使用的技术

xml解析、工厂模式、反射

实现过程
  1. 在xml配置文件中作相应的配置(类的全类名,读取时的id)

  1. 在xxxFactory中首先通过Dom4j等相应的xml解析依赖,对xml配置文件进行解析,然后读取其中与对象创建有关的bean标签,其中的id为创建的对象的key,然后创建对象,将其作为value调用put方法写入即可(采用Map实现)

class xxxFactory{
	public static void getXXX(){
        String classValue = class属性值; //通过xml解析出来
        String id = id属性值;
        Class clazz = Class.forName(classValue);
        map.put(id,(XXX类型)clazz.newInstance);
        return;
    }
}

优点:

  1. 如果类途径发生了变化,只需要在配置文件中改就可以了,不需要改动代码的内容。

  1. getBean方法的本质就是通过id获取value值的一种操作,值得内容通过泛型来转换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值