IOC的底层原理

IOC(概念和原理)

控制反转,是面向对象编程的一种设计原则,可以用来降低计算机代码之间的耦合度。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给他。也可以说依赖被注入到对象中。

通俗的讲,就是把对象创建和对象之间的调用过程,都交给 spring 进行管理,这个过程叫做IOC

使用IOC目的:降低耦合度

IOC底层原理

xml解析、工厂模式、反射

演变过程

原始方式:

耦合度太高

工厂模式:

 通过工厂模式降低了UserService和UserDao之间的耦合度,但仍然没有降到最低

 IOC:

第一步,配置xml文件,配置创建的对象

<bean id="dao" class="com.dao.UserDao"></bean>

第二步,有service类和dao类,创建工厂类,进一步降低耦合度,修改UserDao路径只需要改xm配置文件

class UserFactory{
    public static UserDao getDao(){
        String classValue=class属性值 //xml解析
        Class clazz=Class.forName(classValue) //通过反射创建对象
        return (UserDao)clazz.newInstance;
    }
}

IOC(接口)

IOC思想基于IOC容器来完成,IOC容器底层就是对象工厂

Spring提供IOC容器实现两种方式:(两个接口)

//加载spring配置文件
BeanFactory context = new ClassPathXmlApplicationContext("bean.xml");

//获取配置创建的对象
User user=context.getBean("user",User.class);

BeanFactory

IOC容器基本实现,是Spring内部的使用接口,不提供开发人员进行使用

加载配置文件时候不会创建对象,在获取对象(使用)才去创建对象

ApplicationContext

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

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

哪一种更好

第一种用的时候才创建,节约了资源

但是为了提升运行速度,我们将这种耗时耗资源的操作在服务启动时就应该把他完成

ApplicationContext中的实现类

第一种是要写文件在盘中的路径,比如C盘xx文件夹

第二种是类路径

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

过街的老鼠

感谢你对诗仙女的打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值