Spring技术内幕(第2版) 5.8分
读书笔记 3
老中医

可以看到ApplicationContext在BeanFactory的基础上添加的附加功能,这些功能为ApplicationContext提供了以下BeanFactory不具备的新特性。 图 2-4 ApplicationContext的接口关系 ❍支持不同的信息源。我们看到ApplicationContext扩展了MessageSource接口,这些信息源的扩展功能可以支持国际化的实现,为开发多语言版本的应用提供服务。 ❍访问资源。这一特性体现在对ResourceLoader和Resource的支持上,这样我们可以从不同地方得到Bean定义资源。这种抽象使用户程序可以灵活地定义Bean定义信息,尤其是从不同的I/O途径得到Bean定义信息。这在接口关系上看不出来,不过一般来说,具体ApplicationContext都是继承了DefaultResourceLoader的子类。因为DefaultResourceLoader是AbstractApplicationContext的基类,关于Resource在IoC容器中的使用,后面会有详细的讲解。 ❍支持应用事件。继承了接口ApplicationEventPublisher,从而在上下文中引入了事件机制。这些事件和Bean的生命周期的结合为Bean的管理提供了便利。 ❍在ApplicationContext中提供的附加服务。这些服务使得基本IoC容器的功能更丰富。因为具备了这些丰富的附加功能,使得ApplicationContext与简单的BeanFactory相比,对它的使用是一种面向框架的使用风格,所以一般建议在开发应用时使用ApplicationContext作为IoC容器的基本形式。

简单来说,IoC容器的初始化是由前面介绍的refresh()方法来启动的,这个方法标志着IoC容器的正式启动。具体来说,这个启动包括BeanDefinition的Resouce定位、载入和注册三个基本过程。

//这是应用于文件系统中Resource的实现,通过构造一个FileSystemResource来得到一个在文件 //系统中定位的BeanDefinition //这个getResourceByPath是在BeanDefinitionReader的loadBeanDefintion中被调用的 //loadBeanDefintion采用了模板模式,具体的定位实现实际上是由各个子类来完成的 protected Resource getResourceByPath(String path){ if(path!=null&&path.startsWith("/")){ path=path.substring(1); } return new FileSystemResource(path); } }

0
《Spring技术内幕(第2版)》的全部笔记 13篇
豆瓣
免费下载 iOS / Android 版客户端