IOC概念和原理

  1. 概念:控制反转,把对象创建和对象的调用过程交给Spring进行管理。

    目的:降低耦合度

    底层原理:xml,反射,工厂模式

    为何要做这样一种操作,可以参考普通创建对象方式与工厂模式的区别。

    原始的创建对象的方式耦合度太高,当UserDao发生变化时,UserService也要跟着进行修改。为实现高内聚、低耦合的目标,可以使用工厂模式

    若要进一步降低耦合度,可以使用IOC进行解耦。

    //第一步:xml配置文件,配置创建的对象
    <bean id = "dao" class = "com.atguigu.UserDao"></bean>

    //第二步:有service类和dao类,创建工厂类(该步骤由spring执行)
    class UserFactory{
    public static UserDao getDao(){
    String classValue = class属性值; //1、xml解析,此处class属性值为com.atguigu.UserDao
    Class clazz = Class.forName(classValue); //2、通过反射创建对象,forName(类的全路径)
    return (UserDao)clazz.newInstance;
    }
    }

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

    1. BeanFactory:Spring内部使用的接口,不提倡开发人员使用。

      特点:加载配置文件的时不会创建对象,获取对象时才会创建对象。

    2. ApplicationContext:BeanFactory的子接口,提供了更多更强大的功能,一般由开发人员使用。

      特点:加载配置文件时会把配置文件里的对象进行创建。比如当服务器启动时,便将对象创建,以供后续使用,空间换时间。

      ApplicationContext接口的两个实现类:

      • FileSystemXmlApplicationContext:绝对路径,从盘符开始算起
      • ClassPathXmlApplicationContext:相对路径,从src开始算起

    IOC操作Bean管理(概念)

    1. 什么是Bean管理

      Bean管理指的是两个操作:Spring创建对象Spring注入属性

    2. Bean管理有两种操作方式:

      • 基于xml配置文件方式实现
      • 基于注解方式实现

    IOC操作Bean管理(基于xml方式)

    1. 基于xml方式创建对象

      <!--配置User对象创建-->
      <bean id = "user" class = "com.atguigu.spring5.User"></bean>
      • 在Spring配置文件中,使用bean标签,标签里面添加对应属性,就可以实现对象创建
      • 在bean标签有很多属性,常用属性:
        • id:唯一标识
        • class属性:类全路径(包类路径)
      • 创建对象的时候,默认执行无参数构造方法完成对象创建
    2. 基于xml方式注入属性

      第一种方法:使用set方法进行注入

      (1)创建类,定义属性和对应的set方法

      第二种方法:使用有参构造函数进行注入