1.背景

2.IOC原理解析

1、什么是 IOC

控制反转,把对象创建和对象之间的调用过程,交给 Spring 容器进行管理
使用 IOC 目的:为了耦合度降低
案例: 获取Product产品的案例
核心技术:xml 解析、工厂模式、反射

2、IOC底层实现原理

spring之IOC详解 - 图1
案例中的代码:

  1. package com.ldp.test02;
  2. import com.ldp.model.Product;
  3. import org.junit.Test;
  4. /**
  5. * @Copyright (C) XXXXXXXXXXX科技股份技有限公司
  6. * @Author: lidongping
  7. * @Date: 2021-01-11 11:47
  8. * @Description: <p>
  9. * 这里是模拟代码
  10. * 用于演示bean工程实例化的过程
  11. * </p>
  12. */
  13. public class ProductFactory {
  14. /**
  15. * 模拟工程实现IOC
  16. *
  17. * @param beanName
  18. * @return
  19. * @throws Exception
  20. */
  21. public static Product getProduct(String beanName) throws Exception {
  22. System.out.println(beanName);
  23. // 1.通过name="product" 获得 classValue ,由xml技术实现
  24. String classValue = "com.ldp.model.Product";
  25. // 2.通过反射创建对象
  26. Class<?> aClass = Class.forName(classValue);
  27. // 3.实例化对象
  28. Product product = (Product) aClass.newInstance();
  29. return product;
  30. }
  31. /**
  32. * 测试 上面的工厂
  33. */
  34. @Test
  35. public void test01() throws Exception {
  36. Product product = ProductFactory.getProduct("product");
  37. System.out.println(product);
  38. }
  39. }

3.IOC的BeanFactory接口分析

继承体现:spring之IOC详解 - 图2
1、IOC 思想基于 IOC 容器完成,IOC 容器底层就是对象工厂
2、Spring 提供 IOC 容器实现两种方式
方式一:BeanFactory:IOC 容器基本实现,是 Spring 内部的使用接口,不提供开发人员进行使用
  注意:加载配置文件时候不会创建对象,在获取对象(使用)才去创建对象
 方式二:ApplicationContext 是 BeanFactory 接口的子接口,提供更多更强大的功能,一般由开发人员进行使用
  注意:加载配置文件时候就会把在配置文件对象进行创建
3、ApplicationContext 继承体现
spring之IOC详解 - 图3

完美!