spring源码深度解析_Spring的底层源码解析
Spring 运行原理 : Spring 启动时读取应用程序提供的Bean配置信息,并在Spring容器中生成一份相应的 Bean 配置注册表,然后根据这张注册表实例化 Bean,装配好 Bean 之间的依赖关系,为上 层应用提供准备就绪的运行环境。 然后spring容器会定义一个Bean注册表,之后会根据注册表的信息,去加载到Bean实现类,实例化bean的实现类,在实例化的过程当中,完成一个.
Spring 运行原理 :
Spring 启动时读取应用程序提供的Bean配置信息,并在Spring容器中生成一份相应的 Bean 配置注册表,然后根据这张注册表实例化 Bean,装配好 Bean 之间的依赖关系,为上 层应用提供准备就绪的运行环境。
然后spring容器会定义一个Bean注册表,之后会根据注册表的信息,去加载到Bean实现类,实例化bean的实现类,在实例化的过程当中,完成一个依赖注入,然后被实例化的bean对象还是会被放到spring容器当中,放到它的缓存池里。
源码解析:解析它的启动的过程和怎么去获取bean对象。
一、 ApplicationContext
第一步它会去创建ApplicationContext ,它是Spring中的一个IOC容器,在Spring中,IOC容器有很多种,如:
Spring 中有两个主要的容器系列:
1)实现 BeanFactory 接口的简单容器;
2)实现 ApplicationContext 接口的高级容器。
BeanFactory只是一个简单的容器,它只是提供了对生命周期的管理。
ApplicationContext在应用这个DefaultListableBeanFactory对象的基础上,不仅实现了 BeanFactory 接口提供的功能方法,并且黏合了一些面向应用的功能,如资源/国际化支持/ 框架事件支持等
public interface ApplicationContext extends EnvironmentCapable,
ListableBeanFactory, //继承于 BeanFactory
HierarchicalBeanFactory,//继承于 BeanFactory
MessageSource,
ApplicationEventPublisher,
ResourcePatternResolver //继承ResourceLoader,用于获取 resource 对象
最后它调用了refresh方法,这个方法是容器初始化的一个很重要的入口方法
点进去:
至于为什么这么调:
refresh是容器初始化,所以设置为true,这个true你可以在这一节第二张图片里面看到,不是从头开始第二张,它对容器进行初始化,
而调用obtainFreshFactory完全是因为它创建的bean工厂,里面装载了bean,所以跳这个方法,当然,我说的这些东西都是纯自我理解,
而bean工厂创建完毕后,则开始注册bean,bean的定义都是在配置文件当中,所以先解析配置文件,
解析完成后,它开始注册bean。
其实源码并不难懂,只要你做好笔记和记好步骤就行,但是如果你需要了解每一步,每一个接口和方法的作用,这个看天赋吧,我还小,我还只是个孩子。
更多推荐
所有评论(0)