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又是个啥玩意呢?别着急我们一步步来。
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='苹果'}
class Cup {
String desc = "杯子";
void load(Object object) {
System