image.png image.png
Spring会在程序启动时,去获取Bean的定义,然后将beanDefinition注册到容器里面去,我们从上图的源码中可以看到,其中一个Factory类会把BeanDefinition装到一个map集合中,名字装到一个list集合中。
BeanFactory了解
# image.png image.png从源码中可以看到,BeanFactory可以通过名称获取bean也可以通过bean类型获取bean。
在Spring中默认类都是单例的,所以通过getBean获取的bean一般情况都是同一个对象。如果是多例状态的话,那么getBean会返回一个新的对象。
ApplicationContext了解
image.png从上图可以看出,ApplicationContext相对于BeanFactory来说实现了很多的接口,所以就有很多的功能,不仅仅具有BeanFactory的功能,也有资源的加载,消息的发送,事件监听等上下文功能。
image.png下面是一个实例来演示,我们如果配置一个bean到config中,然后再从程序中获取到这个bean:
image.png image.png
run这个方法会返回context,然后我们通过getbean获取bean即可。
上面只是演示下加载bean和获取bean的方式,下面是更为简单的写法:
加上@Component注解,springboot就会扫描到这个类,然后加载到IOC容器中。
image.png image.png image.png
网友评论