1、spring的三个主要的部分,beans、context、core:
在这三个主要部分中的核心是什么呢?那就非beans莫属了。spring的核心就是把我们平时使用的对象配置文件化,而配置文件中的对象就是被解析为beans来供开发人员来使用的。要说一个spring是一个舞台剧,那么beans就是一个个演员,没有演员怎么来的舞台剧?bean在spring中的重要性可想而知。而context的作用就是封装一下beans。如果没有context的话,我们每次使用spring的编程模式就一定要使用编程式使用spring的ioc容器了,而有了context只有,使用spring的ioc容器变得简单了许多,可以使用声明式的方式了。那么core的作用是什么呢?其实core就是一个工具类,如果我们想要将其改名为utils其实都是可以的。
2、beans:·
BeanFactory是所有的bean工厂的父接口,bean工厂的继承实现关系很是错综复杂,其中的一条主线继承关系就如下图所示。BeanFactory中定义getBean()等基本方法。而HierachicalBeanFactrory主要是说明Bean工厂是可以继承实现的,所以其中定义了getParentBeanFactory()这个接口。而ConfigurableBeanFactory这个类就是我们常用的bean工厂了。
3、context:
ApplicationContext 是 Context 的顶级父类。如下图:
可以看到Application其实是继承自BeanFactory的。其就是对于BeanFactory环境的一个更好的整合。有了BeanFactory我们可以进行编程式Ioc,那么有了ApplicationContext之后我们就可以使用声明式Ioc了,Context对于各种类型的配置文件的兼容整合大大提升了使用者的使用效率。
Context 作为 Spring 的 Ioc 容器,基本上整合了 Spring 的大部分功能,或者说是大部分功能的基础。
4.实际web项目应用 web.xml之中的配置
web容器初始化的时候会加载ContextLoaderListener监听器
ContextLoaderListener会创建WebApplicationContext
WebApplicationContext是ApplicationContext的一个子类,表明WebApplicationContext也可以使用声明式Ioc