三、IOC容器概念及原理

3. IOC容器概念及原理

3.1 演变过程

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

3.2 普通方式:

在这里插入图片描述

在使用相应类的地方new一个新对象,然后调用其相应的方法进行使用。

​ **缺点:**耦合度过高,如先前service层中创建Dao实现类,如果xxxDaoImpl位置发生改变,所有的使用到相应实现类的代码都需要进行修改,工作量大。

3.3 工厂模式实现:

​ 通过创建一个xxxFactory类,在类中存在一个方法专门用来生成对象

public class xxxFactory{
    public static 返回类型 getXXX(){
        return new xxx();
    }
}

在这里插入图片描述

**优点:**如果实现类或类的位置发生了变化,那么service中的代码无需变动,只需要修改xxxFactory中的import导入依赖时的类的路径即可,相比第一种方式减轻了修改量,但是仍有一些不足。

**缺点:**如果类路径发生变化,那么需要在xxxFactory中修改相应的import位置,无法实现代码的对修改关闭原则(开闭原则

3.4 IOC方式

在这里插入图片描述

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

**具体实现过程:**①在xml配置文件中作相应的配置(类的全类名、读取时的key

②在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;
    }
}

**优点:**①如果类路径发生了改变,只需要在配置文件中修改即可,不需要改动代码中的内容

②具体实现是通过map,将解析出来的id作为map的key,value中填入反射创建出来的对象即可

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

3.5 什么是IOC

  • (1)控制反转,把对象创建和对象之间的调用过程,交给 Spring 进行管理
  • (2)使用 IOC 目的:为了耦合度降低
  • (3)做入门案例就是 IOC 实现

3.6 IOC接口(常用)

1、IOC思想基于IOC容器完成,IOC容器的底层原理就是对象工厂

2、Spring提供的IOC容器实现方式:两个接口

**① BeanFactory接口:**IOC 容器基本实现,是 Spring 内部的使用接口,不提供开发人员进行使用 , 加载配置文件时候不会创建对象,在获取对象(使用)才去创建对象

注:具体是否加载对象貌似是由lazy-init属性来决定,与接口无关(未确定

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

  • 加载配置文件时候就会把在配置文件对象进行创建

3、ApplicationContext接口实现类

在这里插入图片描述

FileSystemXmlApplicationContext:加载系统文件路径

ClassPathXmlApplicationContext:加载src路径

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值