Spring框架(框架学习)

需要知道的似乎很多,需要表达的似乎很少

框架的目的是帮助开发人员简化开发。这里的开发人员是框架的使用者,也是专注于业务的人。
所以要了解一个框架,可以从两个方面:框架开发者,框架使用者。

Spring框架提供bean和bean容器的概念的实现。
对于使用者,只需要设计实现Bean和Bean的依赖、调用的关系,然后用框架提供的文件(xml)或者注解的形式说明Bean的关系就可以了。

Spring中Bean容器初始化和Bean实例化的过程(XML文件或者注解的读取解析过程)开始的时机,我们可以从java应用的启动中找到。

java的web应用都是基于Servlet、Listener、Filter几个接口,以及web.xml文件和相关注解的。
Servlet容器的启动过程是固定的,只是给了几个接口让我们开发、扩展。
Spring就只能扩展特定的接口,触发自身的初始化操作。

一些概念:
*aware接口:
我们定义bean的时候,可以完全忽略框架相关的信息。这是spring提倡的非侵入式思想。但是我们有时候会需要知道框架提供的信息。例如:bean的名字,应用程序的上下文信息。此时需要实现对应的aware接口。spring框架加载的时候,会处理这些接口的实现类,使用接口提供的方法,注入我们需要的框架相关的对象信息。

Spring容器初始化过程

两种类型的任务:

  1. 容器初始化
    容器的构建
    容器的前置后置处理器调用
    bean的前置后置处理器注册
    事件监听器的注册与事件触发
  2. 相关bean对象构建与注册
    MessageSource
    事件多播器
    生命周期管理器

AbstractApplicationContext的refresh方法:

  1. prepareRefresh:刷新前的预处理
  2. obtainFreshBeanFactory:获取bean工厂 (创建bean factory)
  3. prepareBeanFactory :bean factory的预处理
  4. postProcessBeanFactory:bean factory的后置处理器
  5. invokeBeanFactoryPostProcessors:执行bean factory的后置处理器
  6. registerBeanPostProcessors:注册bean的前置后置处理器 ,会在bean创建的时候执行。
  7. initMessageSource:初始化MessageSource组件 bean对象
  8. initApplicationEventMulticaster:初始化事件多播器 bean对象
  9. onRefresh:刷新
  10. registerListeners:注册监听器
  11. finishBeanFactoryInitialization:初始化剩下的单实例bean
  12. finishRefresh:完成刷新,发布相应事件 会获取或新建一个lifecycleProcessor bean对象

你可能感兴趣的:(java,框架)