概要
过度
我们前面通过一个很简单的例子介绍了XmlBeanFactory
的工作原理,我们的例子如下:
public class MyTest {
public static void main(String[] args){
XmlBeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource(""));
beanFactory.getBean("");
}
}
这是我们最开始学习Spring时的例子,在学习SpringMVC实战时我们最先接触的就是自己new
一个Factory
,然后读配置、实例化bean。
但是在我们正常的使用中却很少直接new一个Factory
来操作。为什么?
如果在上面的解读过程中我们想的多一些的话,很容易发现,其实很多时候我们都依赖了get
方法,但是却没有管是在哪set
的,比如:
- 我们的一大堆后处理器,从哪注册进去?
- 我们的各种定制的解析器,比如从我们配置的Xml的字符串解析成我们需要的类;用环境变量对引用进行替换;Spring表达式的解析;从哪设置?
- 我们有一大堆
aware
,并会对相应实现了该接口的bean进行填充,但是从哪设置该填什么进去?
还有很多别的东西,我们清楚在哪用到了,但是不清楚从哪设置。并不是我们不清楚,而是XmlBeanFactory
并没有直接提供这些的配置,只是提供了set
接口,需要我们自己在main
函数中设置。这虽然和Spring的高可用、高扩展的思路一脉相承,但是在使用上却非常不友好。
所以我们提出了一个新的封装,基于BeanFactory
和一些其他的工具,对BeanFactory
中的多个配置功能提供默认的、全面的封装。保证我们可以在正式的环境中像上面的例子一样仅仅通过两行代码完成功能。这个封装是ApplicationContext
系列。
内容简介
本文主要对ApplicationContext
进行一些粗略的介绍,并提出一个新的例子,方便后面对ApplicationContext
的实现逻辑进行解析。
所属环节
ApplicationContext
的引入
上下环节
上文:了解BeanFactory
的基本工作原理,包括BD的加载、Bean实例的构建
下文: 开始接触基于Spring的各种通用框架,例如JdbcTemplate系列、JPA系列还有什么分布式调用啥的
同阶段: 了解AOP的实现原理
源码解析
入口
public class MyApplicationContextTest {
public static void main(String[] args){
ApplicationContext context = new ClassPathXmlApplicationContext("");
context.getBean("");
}
}
接下来就围绕这两行代码,进行解析。
网友评论