【译文】【学习】Spring ApplicationContext

【目标读者】

  本教程是专为java编程人员设计的,用来帮助他们理解Spring 3框架以及基于它的应用。

【前置条件】

  在阅读教程之前你应该有一个比较好对java语言知识的理解

【系列教程】

  Introduction to spring framework

     Spring interview questions

  Dependency injection(ioc) in spring

  Spring hello world example in eclipse

  Spring java based configuaration

  Dependency injection via setter method in spring

  Dependency injection via constructor in spring

  Spring Bean scopes with examples

  Initializing collections in spring

  Beans Autowiring in spring

  Inheritance in Spring

  Spring ApplicationContext

  Spring lifetime callbacks

  BeanPostProcessors in Spring

  Annotation based Configuration in spring

  Spring AOP tutorial

 

【ApplicationContext】

  ApplicationContext 是一个核心接口,用来给应用程序提供配置信息。一个ApplicationContext可以提供以下功能:

    • Bean工厂方法,继承自ListableBeanFactory. 使得应用不再需要自己实现单例模式。
    • 解析消息的能力,支持国际化,继承自MessageSource接口。
    • 通用的方式加载资源的能力,继承自ResourceLoader接口。
    • 发布事件的能力,ApplicationContext的实现必须提供注册事件监听器的方法。
    • 继承父上下文,子孙上下文的定义总是优先的。这意味着,一个父上下午可以在整个web应用中使用,而每一个servlet有他自己的上下文,并与其他servlet相互独立

【应用上下午还是BeanFactory】

  一般通过getBean方法获取Bean实例。BeanFactory是ApplicationContext的一个子集,提供的功能相对较少。因此我们一般用ApplicationContext。

 

【在Bean类中获取ApplicationContext】

  为了可以访问ApplicationContext,我们应该在对应的Java Bean中实现 ApplicationContextAware 接口。ApplicationContextAware 有以下接口:

public void setApplicationContext(ApplicationContext applicationContext)  
  
            throws BeansException 

 

  应用使用的ApplicationContext的实现会调用这个方法,并传递具体的ApplicationContext 对象,这样我们就可以获取到所有的配置信息。

  实现ApplicationContextAware 接口是有意义的,例如当一个对象要求获取一个协作bean集合。

  注意:通过XML bean引用配置比实现ApplicationContextAware 接口来获取bean 要跟更好一点。XML 配置更好!

 

  如果一个对象需要访问文件资源,也可以实现这个接口,例如想要调用getResource方法,想要发布一个事件,访问MessageSource。然而,一个更好的方法是实现ApplicationEventPublisherAware 或者MessageSourceAware 接口。

 

  

    自己理解: MessageSourceAware 、ApplicationEventPublisherAware 、ApplicationContextAware 应该是接口注入方式

 

posted @ 2016-12-29 15:14  彭玉松  阅读(121)  评论(0)    收藏  举报