1.背景
2.IOC原理解析
1、什么是 IOC
控制反转,把对象创建和对象之间的调用过程,交给 Spring 容器进行管理
使用 IOC 目的:为了耦合度降低
案例: 获取Product产品的案例
核心技术:xml 解析、工厂模式、反射
2、IOC底层实现原理
案例中的代码:
package com.ldp.test02;
import com.ldp.model.Product;
import org.junit.Test;
/**
* @Copyright (C) XXXXXXXXXXX科技股份技有限公司
* @Author: lidongping
* @Date: 2021-01-11 11:47
* @Description: <p>
* 这里是模拟代码
* 用于演示bean工程实例化的过程
* </p>
*/
public class ProductFactory {
/**
* 模拟工程实现IOC
*
* @param beanName
* @return
* @throws Exception
*/
public static Product getProduct(String beanName) throws Exception {
System.out.println(beanName);
// 1.通过name="product" 获得 classValue ,由xml技术实现
String classValue = "com.ldp.model.Product";
// 2.通过反射创建对象
Class<?> aClass = Class.forName(classValue);
// 3.实例化对象
Product product = (Product) aClass.newInstance();
return product;
}
/**
* 测试 上面的工厂
*/
@Test
public void test01() throws Exception {
Product product = ProductFactory.getProduct("product");
System.out.println(product);
}
}
3.IOC的BeanFactory接口分析
继承体现:
1、IOC 思想基于 IOC 容器完成,IOC 容器底层就是对象工厂
2、Spring 提供 IOC 容器实现两种方式
方式一:BeanFactory:IOC 容器基本实现,是 Spring 内部的使用接口,不提供开发人员进行使用
注意:加载配置文件时候不会创建对象,在获取对象(使用)才去创建对象
方式二:ApplicationContext 是 BeanFactory 接口的子接口,提供更多更强大的功能,一般由开发人员进行使用
注意:加载配置文件时候就会把在配置文件对象进行创建
3、ApplicationContext 继承体现