IOC概念和原理

目录

1.什么是IOC

2.IOC的底层原理

3.IOC过程

4.IOC总结


​​​​​​​

1.什么是IOC

 


IOC即为控制反转,把对象的创建和对象之间的调用过程,交给Spring管理。不需要像se阶段一样new对象。
使用IOC的目的:为了降低耦合度。所谓耦合度就是某模块(类)与其它模块(类)之间的关联、感知和依赖的程度,是衡量代码独立性的一个指标,也是软件工程设计及编码质量评价的一个标准。


2.IOC的底层原理

IOC概念和原理_第1张图片

假如有以上俩个类,传统创建对象我们需要在UesrService类中调用uesrDao中add方法需要先在UesrService中new uesrDao的对象,再调用方法。

传统创建对象致命问题:耦合度高,关联过于紧密,牵一发动全身。

为了降低耦合度,解决方案如下文。

建一个工厂类

IOC概念和原理_第2张图片

 通过工厂的设计模式,在UserFactory中返回创建的对象,对象在工厂中得到。这个过程只是降低了UserService和UserDao的耦合度,没有降低到最大限度。此时需要ioc。

3.IOC过程

1.配置xml文件,配置要创建的对象

2.假如有上service类和dao类,创建工厂类

class UserFactory {
public static UserDao getDao() {
String classValue=class属性值;      //通过xml解析得到class的值
 
//通过反射得到对象
 
Calss clazz=class.forName(classValue);
 
return  (UserDao)clazz.newInstance();   //调用newInstance方法此时返回的也是UserDao对象
}
}


 

此时只要修改xml的配置文件,就可以通过工厂返回对象。耦合度进一步降低。

用Spring框架就是简化代码,把耦合度降低。

4.IOC总结

1.IOC本质是个容器,本质上是对象工厂,通过读取配置文件,再通过它用反射来完成。

2.Spring提供的IOC容器的俩种实现方式(俩个接口):

public class Spring5Test {
    @Test
    public  void test(){
 
        //加载spring配置文件,ApplicationContext 在加载配置文件时就会创建对象,BeanFactory在下面获取创建对象的时候才会创建对象
        ApplicationContext context =new ClassPathXmlApplicationContext("bean1.xml");
 
        //获取配置创建的对象,BeanFactory在此时才会创建对象
        User user=context.getBean("user",User.class);
 
        user.add();
    }
 
}

1.BeanFactory:IOC容器基本实现方式,Spring内部使用接口,一般不提供开发人员使用。

特点:加载配置文件,不会去创建对象。在获取或使用对象时才创建对象。

2.ApplicationContext:可以理解成BeanFactory子接口,比BeanFactory更加强大。面向开发人员。

特点:加载配置文件,就会去创建对象。一般使用第二种。

3.ApplicationContext实现类
IOC概念和原理_第3张图片

 IOC概念和原理_第4张图片

你可能感兴趣的:(Spring5,spring,java,ioc)