好记性不如烂笔头84-spring3学习(5)-spring的ApplicationContext(应用上下文)
2015-03-19 08:25
363 查看
我们一般把BeanFactory叫做IoC容器,叫ApplicationContext 为应用上下文(或者Spring容器);
如果说BeanFactory是Spring的心脏,那么ApplicationContext就是Spring的完整的身躯了;
ApplicationContext由BeanFactory派生而来,提供了更加多的面向实际应用的功能;
在BeanFactory中,很多功能需要以编程的方式实现,而在ApplicationContext中则可以通过配置的方式实现。
ApplicationContext还提供了以下的功能:
1) MessageSource,提供国际化的消息访问
2)资源访问,如URL和文件
3)事件传播,实现了ApplicationListener接口的bean
4)应用多个上文,使得每一个上下文都专注于一个特定的层次,比如应用的web层.
• String getMessage(String code, Object[] args, String default, Locale loc):用来从MessageSource获取消息的基本方法。如果在指定的locale中没有找到消息,则使用默认的消息。args中的参数将使用标准类库中的MessageFormat来作消息中替换值。
• String getMessage(String code, Object[] args, Locale loc):本质上和上一个方法相同,其区别在:没有指定默认值,如果没找到消息,会抛出一个NoSuchMessageException异常。
• String getMessage(MessageSourceResolvable resolvable, Locale locale):上面方法中所使用的属性都封装到一个MessageSourceResolvable实现中,而本方法可以指定MessageSourceResolvable实现。
当一个ApplicationContext被加载时,它会自动在context中查找已定义为MessageSource类型的bean。此bean的名称须为messageSource。如果找到,那么所有对上述方法的调用将被委托给该bean。否则ApplicationContext会在其父类中查找是否含有同名的bean。如果有,就把它作为MessageSource。如果它最终没有找到任何的消息源,一个空的StaticMessageSource将会被实例化,使它能够接受上述方法的调用。
这段配置文件告诉我们资源文件加载的方式,它可以从one.properties,two.properties,两个文件里分别加载我们需要的资源,且它们是按配置文件夹的顺序加载的。
如果说BeanFactory是Spring的心脏,那么ApplicationContext就是Spring的完整的身躯了;
ApplicationContext由BeanFactory派生而来,提供了更加多的面向实际应用的功能;
在BeanFactory中,很多功能需要以编程的方式实现,而在ApplicationContext中则可以通过配置的方式实现。
ApplicationContext还提供了以下的功能:
1) MessageSource,提供国际化的消息访问
2)资源访问,如URL和文件
3)事件传播,实现了ApplicationListener接口的bean
4)应用多个上文,使得每一个上下文都专注于一个特定的层次,比如应用的web层.
1.MessageSource
ApplicationContext接口扩展了MessageSource接口,因而提供了消息处理的功能(i18n或者国际化)。与HierarchicalMessageSource一起使用,它还能够处理嵌套的消息,这些是Spring提供的处理消息的基本接口。让我们快速浏览一下它所定义的方法:• String getMessage(String code, Object[] args, String default, Locale loc):用来从MessageSource获取消息的基本方法。如果在指定的locale中没有找到消息,则使用默认的消息。args中的参数将使用标准类库中的MessageFormat来作消息中替换值。
• String getMessage(String code, Object[] args, Locale loc):本质上和上一个方法相同,其区别在:没有指定默认值,如果没找到消息,会抛出一个NoSuchMessageException异常。
• String getMessage(MessageSourceResolvable resolvable, Locale locale):上面方法中所使用的属性都封装到一个MessageSourceResolvable实现中,而本方法可以指定MessageSourceResolvable实现。
当一个ApplicationContext被加载时,它会自动在context中查找已定义为MessageSource类型的bean。此bean的名称须为messageSource。如果找到,那么所有对上述方法的调用将被委托给该bean。否则ApplicationContext会在其父类中查找是否含有同名的bean。如果有,就把它作为MessageSource。如果它最终没有找到任何的消息源,一个空的StaticMessageSource将会被实例化,使它能够接受上述方法的调用。
ApplicationContext加载多个配置文件,并读取
[code]Bean.xml的配置情况 <beans> <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> <property name="basenames"> <list> <value>one</value> <value>two</value> </list> </property> </bean> </beans>
这段配置文件告诉我们资源文件加载的方式,它可以从one.properties,two.properties,两个文件里分别加载我们需要的资源,且它们是按配置文件夹的顺序加载的。
[code]one.properties # in 'one.properties' one=one format! two.properties # in 'two.properties' message=one format!
ApplicationContext加载多个配置文件的J***A源代码
[code]package com.spring; import org.springframework.context.MessageSource; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * 简单模拟ApplicationContext加载多个配置文件,并读取属性 * * @author 范芳铭 */ public class EasyApplicationContext { public static void main(String[] args) { MessageSource resources = new ClassPathXmlApplicationContext("bean.xml"); String message = resources.getMessage("message", null, "Default", null); System.out.println(message); } }
相关文章推荐
- 好记性不如烂笔头94-spring3学习(15)-用spring的jdbcTemplate简单访问数据库
- 好记性不如烂笔头95-spring3学习(16)-spring配置log4j
- 好记性不如烂笔头92-spring3学习(13)-spring和hibernate访问数据库的小差异
- 好记性不如烂笔头87-spring3学习(8)-IoC的理解和比喻
- 好记性不如烂笔头91-spring3学习(12)-bean的PostConstruct和PreDestroy
- 好记性不如烂笔头30-java应用中的过滤器Filter(2)
- 好记性不如烂笔头41-javaWeb应用中ServletRequest域的监听(5)
- 好记性不如烂笔头101-spring3(21)-jdbcTemplate和NamedParameterJdbcTemplate的小差异
- 好记性不如烂笔头------使用Gradle构建不同的应用名和图标
- 好记性不如烂笔头31-java应用中的敏感词过滤实现(3)
- 好记性不如烂笔头102-spring3(22)-高并发下的延迟加载陷阱
- 好记性不如烂笔头97-spring3学习(18)-多线程模式下的spring事务
- 好记性不如烂笔头39-javaWeb应用中的监听器(1)
- 好记性不如烂笔头83-spring3学习(4)-spring的BeanFactory(IoC容器)
- Spring学习笔记一: Bean工厂(BeanFactory )与应用上下文(ApplicationContext)BeanFactory
- 好记性不如烂笔头11-WEB应用的HttpServletResponse
- 好记性不如烂笔头40-javaWeb应用中HttpSession域的监听(4)
- 好记性不如烂笔头89-spring3学习(10)-spring3常用schema(持续整理)
- spring cloud学习笔记-1应用上下文服务
- Spring学习笔记一: Bean工厂(BeanFactory )与应用上下文(ApplicationContext)BeanFactory