Spring创建Bean过程的方法
1. beans包提供了以编程方式管理和操作bean的基本功能,而context包增加了ApplicationContext,它以一种更加面向框架的方式增强了BeanFactory的功能。
2. context包的基础是位于ext包中的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:/
classpath:(从classpath路径中查找文件并返回他的资源句柄)
WEB-INF/
注意: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应用。
-
Java学习如何走出第一步
Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。下面是小编整理的关于Java学习如何走出第一步,欢迎大家参考!Java开发平台的种类很多,在这篇文章中我主要以J2SE为例子。J2SE几乎是开发所有Java应用...
-
Java命令参数说明大全
为了提高性能,往往需要调整java命令参数,以求系统达到最佳新能。另外这些参数的配置也是影响系统稳定性的一个重要因素,相信大多数Java开发人员都见过OutOfMemory类型的错误。这其中很可能就是JVM参数配置不当或者就没有配置没意识到配置引起的。那么java命令参数...
-
Java工程师面试题及答案
现在就快到企业的招聘季了,你们准备好去面试了吗?今天小编收集了一些面试中常会问道的问题给大家,希望能给大家带来帮助哦!也祝各位同学都能找到让自己满意的工作!1.如何判断一个数是2的幂。个人认为,数字转化为二进制,符号位为0,余下部分有且只有最左边一位是1,其余...
-
Java应用注册后台服务
项目中有一个java应用程序,交付后用户要求要把这个程序做成后台服务程序,即:系统启动后该程序可以自动启动,并且在前台不要出现运行窗口,维护人员只要在服务管理(Windows)中选择启动或停止即可.解决办法如下:Linux在Linux中注册后台服务程序相对容易,只需编辑/etc/ini...
相关文章
- Diaspora Finance Powers Global Development美文欣赏
- Java认证考试知识点:Spring获取Bean四种方法
- 英语阅读:Web Boosts Grandpas Brain
- Passage Eighteen (Strictly Ban smoking)英语阅读理解
- 雅思口语范文:My Experience as an English Learner
- Unit six Opening and Closing Ceremonies口译材料
- 英语口语:Teaching and Learning Responsibility
- 英语阅读:Covergirl unveils empowering brand update
- Brain training rules大脑训练法则英语阅读
- 牛津译林版九年级上册英语 Unit 3 Teenage problems-Reading 同步练习