b ApplicationContext额外的能力- messagesource & 事件机制 & resource的访问

这篇博客介绍了Spring的ApplicationContext的附加功能,包括使用MessageSource进行国际化消息处理,标准和自定义事件的发布与监听,以及对低级Resource的访问。MessageSource接口支持i18n,事件机制包括ApplicationEvent和ApplicationListener,资源访问则展示了ApplicationContext作为ResourceLoader的功能。此外,还提到了ApplicationContext在Web应用中的实例化和作为Java EE RAR文件的部署方式。
摘要由CSDN通过智能技术生成

–> go to 总目录

1.15 附加的功能

org.springframework.beans.factory包提供了基础的功能去管理多样性的Bean,包括以编程的方式。这个org.springframe.context 包添加了ApplicationContext接口,来扩展BeanFactory以提供更多面向框架的风格。很多用户完全以声明式来使用ApplicationContext接口,但是会依赖Contextloader去加载ApplicationContext去为java EE WEB应用做准备。

  • 以i18n-style发送消息,通过MessageSource接口
  • 通过URLS和files等加载资源,通过ResourceLoader接口
  • 通过ApplicationListener接口来发布消息,通过使用ApplicationEventPublisher来发送消息
  • 层次化的加载多个Context,让每一个位于特殊的layer,就像一个application的web layer,通过 HierarchicalBeanFactory接口。

15.1 使用MessageSource的初始化

接口方法
ApplicationContext接口集成接口MessageSource,因此提供了一个国际化的功能i18n。Spring 也提供了HierarchicalMessageSource接口–能够层次化的处理消息。这些接口能够提供关于Spring处理消息的解决方案。方法定义的接口包括。

  • String getMessage(String code, Object[] args, String default, Locale loc)
    基础的方法用于从MessageSource获取消息,当没有消息说,会返回一个默认的消息。任何消息都必须符合MessageFormat消息格式,通过替换MessageFormat类的属性值。
  • String getMessage(String code, Object[] args, Locale loc)
    潜在的和上一个方法提供功能一致,就是没有默认方法。如果没有消息,NoSuchMessageExceotion就会被抛出
  • String getMessage(MessageSourceResolvable resolvable, Locale locale)
    所有属性像前两个方法,这次被包裹在MessageSourceResolvable对象里,如果没有消息,NoSuchMessageExceotion就会被抛出

加载机制
当一个ApplicationContext被加载的时候,会自动寻找并加载MessageSourcebean。而且这个beMan必须有name:messageSource。在MessageSourcebean被加载后,那么所有的方法都会被委托给这个bean。如果不能找到,那么一个空的DelegatingMessageSource就会被初始化。

Spring提供了两种MessageSource
ResourceBundleMessageSource 和 StaticMessageSource。都实现了HierachialMessageSource。StaticMessageSource很少备用到,但是提供编程化的方式去向Source添加message。
ResourcrBundleMessageSource的示例
在这里插入图片描述
这三种值对应的属性文件,放置在classpath
在这里插入图片描述
执行代码去验证
在这里插入图片描述
总结
MessageSource定义在beans.xml中,存在classpath的根目录下。messageSource定义了一堆resource bundles属性文件,通过basenames属性。这三个文件也都相应的存在classpath的根目录下–format.properties,exception.properties和windows.pro

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值