<Spring>IOC容器---底层原理-2

一、IOC的概念和原理

1、什么是IOC(Inversion of Control)

(1)控制反转,是面向对象编程的一种设计原则,使用IOC目的是降低耦合度。

(2)把对象创建和对象之间的调用过程,交给Spring进行管理

例如,有两个类,User类Person类,那么想要在User类中调用Person类的方法,那么在User类中就要得到Person对象,这就是对象调用,现在把这个过程交给Spring处理,此即IOC

2、IOC底层原理

(1)xml解析、工厂模式、反射

创建两个类UserServiceUserDao

class UserService
{
	excute()
	{
		
	}
}
class UserDao
{
	add()
	{
		.......
	}
}

现在想要在UserService类excute方法中调用UserDao中的add方法

那么可以这么做:

(1)原始方式

class UserService
{
	excute()
	{
		UserDao dao=new UserDao();
		dao.add();
	}
}
class UserDao
{
	add()
	{
		.......
	}
}

缺点:耦合度太高,当UserDao的路径变化了,或者是User中的add方法变了,UserService都要跟着相应发生变化。由于程序讲究“高内聚,低耦合”,因此这样不利于程序的扩展

(2)工厂模式

通过创建一个中间类降低UserServiceUserDao之间的耦合

class UserFactory
{
    public static UserDao getDao()
    {
        return new UserDao();
    }
}

那么就可以这么调用

class UserDao
{
    add()
    {
        ......
    }
}
class UserService
{
    excute()
    {
        UserDao dao=UserFactory.getDao();
        dao.add();
    }
}

虽然UserServiceUserDao之间解耦合了,UserFactory与其它两个之间还是存在耦合,使用工厂模式是为了降低耦合

(3)使用IOC

在这里插入图片描述

在这里如果UserDao的路径发生变化了,工厂类也不需要进行修改,进一步降低了耦合

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

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

(1)BeanFactory

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

(2)ApplicationContext

  • BeanFactory 接口的子接口,提供更多更强大的功能,一般由开发人
    员进行使用
  • 加载配置文件时候就会把在配置文件对象进行创建

3、ApplicationContext 接口有实现类
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值