中国教育在线 中国教育网 加入收藏 设为首页

Java认证:Spring创建Bean过程

http://itpx.eol.cn  来源:  作者:网络转载  2011-09-06    

  1. beans包提供了以编程方式管理和操作bean的基本功能,而context包增加了ApplicationContext,它以一种更加面向框架的方式增强了BeanFactory的功能。

  2. context包的基础是位于org.springframework.context包中的ApplicationContext接口。它是由 BeanFactory接口派生而来的,提供了BeanFactory的所有功能。为了以一种更面向框架的方式工作,使用分层和继承关系的上下文,context包还提供了一下的功能。

  a. MessageSource,对I18N消息的访问。

  b. 资源访问,例如URL和文件

  c. 事件传递给是吸纳了ApplicationListener接口的bean

  d. 载入多个(有继承关系)上下文,使得每一个上下文都专注于一个特定的层是,比如应用的web层。

  国际化支持

  1. ApplicationContext扩展了MessageSource接口,因而提供了messaging的功能(I18N或者国际化)。同 NestingMessageSource一起使用,还能处理分级的信息,这些是spring提供的处理信息的基本接口。

  2. 当一个ApplicationContext被加载时,它会自动查找在context中定义的MessageSource bean.这个bean必须交做messageSource.如果找了这样一个bean,所有对上述方法的调用将被委托给找到的 messageSource.如果没有找到messageSource,ApplicationContext将会尝试查找他的父亲是否包含有同名的 bean.如果有,它将把找到的bean作为MessageSource.如果他没有找到任何的信息处理源,他会创建一个 StaticMessageSource.

  3. Spring目前提供了两个MessageSource的实现,他们是

  ResourceBundleMessageSource和StaticMessageSource.两者都实现了 NestingMessageSource一边能够处理嵌套的信息。StaticMessageSource很少被使用,但是他提供了编程的方式向 source增加信息,我们经常使用的是ResourceBundleMessageSource.

  在Spring中使用资源

  1. ApplicationContext继承了ResourceLoader接口,在这个接口中,定义了getResource()方法,如下:

  Resource getResource(String location)

  该方法返回一个资源句柄。这个句柄应该总是一个可重复使用的资源描述符,允许多次调用getInputStream();

  2. getResource()方法的参数是一个资源访问地址,例如:

  file:\c:/test.data

  classpath:test.data(从classpath路径中查找test.dat文件并返回他的资源句柄)

  WEB-INF/test.dat

  注意:getResource()方法返回的Resource句柄并不意味着资源实际存在,你需要调用Resource接口的exists()方法判断资源是否存在。

  Resource提供了与协议无关的特性。

  事件传递

  1. ApplicationContext中的时间处理是通过AppcationEvent类和ApplicationListener接口来提供的。如果上下文中部署了一个实现了ApplicationListener接口的bean,每次一个ApplicationEvent发布到 ApplicationContext时,那个bean就会被通知。实质撒谎功能,这是标准的Observer设计模式。

  2. Spring提供的三个标准事件

  a. ContextRefreshedEvent

  当ApplicationContext已经初始化或刷新后发送的事件。这里初始化意味着:所有的bean被装载,singleton被预实例化,以及ApplicationContext已经准备好。

  b. ContextClosedEvent

  当使用ApplicationContext的close()方法结束上下文的时候发送的事件。这里意味着:singleton被销毁。

  c. RequestHandledEvent

  一个与web相关的事件,告诉所有的bean一个HTTP请求已经被响应了(这个时间将会在一个请求结束后被发送—)。注意,这个时间只能应用于使用了Spring的DispatcherServlet的web应用。

  =========================================================================================

  

推荐给好友    我要收藏    我要纠错    分享到

免责声明:

① 凡本站注明“稿件来源:中国教育在线”的所有文字、图片和音视频稿件,版权均属本网所有,任何媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发表。已经本站协议授权的媒体、网站,在下载使用时必须注明“稿件来源:中国教育在线”,违者本站将依法追究责任。

② 本站注明稿件来源为其他媒体的文/图等稿件均为转载稿,本站转载出于非商业性的教育和科研之目的,并不意味着赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。

内容推荐
eol.cn简介 | 联系方式 | 网站声明 | 京ICP证140769号 | 京ICP备12045350号 | 京公网安备 11010802020236号
版权所有 北京中教双元科技集团有限公司 EOL Corporation
Mail to: webmaster@eol.cn