Spring核心容器IOC案例讲解,带你理解IOC

发布时间:2024年01月23日

Universe Infinity inc.

什么是IOC容器,先把IOC给忽略到,其实就是个容器。
什么?容器又是个啥玩意?容器是用来放东西的东西啊。
各个领域都喜欢起一些专业术语,显得很高级。给你讲IOC是不是很高级,给你讲Map是不是就明白了。

bean对象最终存储在spring容器中,在spring源码底层就是一个map集合,存储bean的map在DefaultListableBeanFactory类中:
private final Map<String, BeanDefinition> beanDefinitionMap = new ConcurrentHashMap<>(256);
Spring容器加载到Bean类时 , 会把这个类的描述信息, 以包名加类名的方式存到beanDefinitionMap 中。
其中 String是Key , 默认是类名首字母小写 ;BeanDefinition , 存的是类的定义(描述信息) , 我们通常叫BeanDefinition接口为 : bean的定义对象。

在Spring的底层,其就是一个Map数据结构。这个Map被大家称为容器,其中存放的是一个个的对象。
那么IOC又是个啥玩意呢?别着急我们一步步来。

1、小明买苹果准备吃(但是牙口不好),小明买把刀切苹果。

  • 苹果和刀都是给好的,没的说。
class Apple {
   
    String desc = "苹果";
    @Override
    public String toString() {
   
        return "Apple{desc='" + desc + "'}";
    }
}
class Knife {
   
    String desc = "水果刀";
    void cut(Object object) {
   
        System.out.println(this + "切:" + object);
    }
    public String toString() {
   
        return "Knife{desc='" + desc + "'}";
    }
}
  • 小明要买水果刀吃苹果,这些都要自己去做(这个过程就new)
public class Main {
   
    @Test
    public void test1() {
   
        Apple apple = new Apple(); //小明买苹果准备吃(但是牙口不好)
        Knife knife = new Knife(); //小明买把刀
        knife.cut(apple); //小明用刀切苹果
    }
}
  • 输出Knife{desc='水果刀'}切:Apple{desc='苹果'}

2、小明要喝依云山雪水(脑袋进水了吧)。小明要先去买个瓶子,然后乘坐交通工具去依云山,小明在雪山下面等了好久,终于雪化了,灌了一瓶水,高高兴兴回来了。

  • 杯子和水都是给定的,没的说
class Cup {
   
    String desc = "杯子";
    void load(Object object) {
   
        System
文章来源:https://blog.csdn.net/qq_36722262/article/details/135796107
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。