Spring AppliactionContext功能介绍
2013-04-23 13:39
253 查看
上一篇博客提到了Spring bean的基本配置,以及Spring IOC概念和用途,以及两种注入方式,这一篇我们讲述 AppliactionContext相比BeanFactory多的功能
AppliactionContext是BeanFactory的子类,顾名思义,功能强大与它。。。
第一:我们来看下Spring对国际化的支持
下面通过一个例子看一下Spring对国际化的支持和管理。。
首先在src目录下建立两个国际化资源文件,messages_zh_CN.properties 和 messages_en_US.properties
国际化资源文件的命名规则:basename_语言_国家。这里messages代表basename , zh代表语言名,CN代表国家名
两个文件中的内容很简单。messages_zh_CN.properties里
在messages_en_US.properties里
上面两个文件里,hello和loginTitle表示国际化资源文件的Key 等号后面的value 。。。取值是根据key来取的,这里的{0} {1}表示通配符,需要传值,就这么简单
要实现国际化,还需在配置文件里加入Spring对国际化的管理,Spring中ResourceBundleMessageSource类专门处理国际化,接下来看一下beans.xml
, 这里对应的messages 。。。同时在set注入时,碰到参数为数组类型时,可以用<list>
<value></value>
</list>
这种配置。。。
最后看一下测试类。。很简单 直接调用ApplicationContext提供的getMessage方法,传入三个参数,第一个:国际化资源文件的key,第二个:去国际化资源文件中通配符匹配,是一个String[]类型,第三个:Locale.国家
运行程序,最后控制台打印
![](http://img.my.csdn.net/uploads/201304/23/1366695964_1644.jpg)
第二:来看一下AppliactionContext加载多个配置文件
ApplicationContext经常用到的三个实现:
1.ClassPathXmlApplicationContext:从类路径中的XML文件载入上下文定义信息。把上下文定义文件当成类路径资源。
2.FileSystemXmlApplicationContext:从文件系统中的XML文件载入上下文定义信息。
3.XmlWebApplicationContext:从Web系统中的XML文件载入上下文定义信息。
加载多配置很简单,直接使用ApplicationContext ctx = new ClassPathXmlApplicationContext("a.xml","b.xml.....")
括号参数传入多个String类型的参数就行。。。
这句话其实是ApplicationContext预初始化Spring容器中所有的singleton Bean...至于什么是singleton Bean,以及还能配置什么Bean,在下一篇Bean的作用域会说到。。
第三:AppliactionContex对资源访问的支持
1、classpath : 从类路径加载
2、ftp:从网络加载,基于FTP协议加载
3、http:从网络加载,基于http协议加载
这里就介绍一下第一种方式,
在src下建立aaa.txt。。。。内容是
接下来看下主方法,Spring如何加载他。。。
很简单,用Resource res = ctx.getResource("classpath:aaa.txt"); 这句话就表明加载classpath下aaa.txt文件,接下来的是对其进行的操作
最后控制台打印
![](http://img.my.csdn.net/uploads/201304/23/1366698584_7802.jpg)
今天就写到这,下一篇将阐述Spring中Bean的作用域以及依赖注入P命名空间和嵌套Bean
AppliactionContext是BeanFactory的子类,顾名思义,功能强大与它。。。
第一:我们来看下Spring对国际化的支持
下面通过一个例子看一下Spring对国际化的支持和管理。。
首先在src目录下建立两个国际化资源文件,messages_zh_CN.properties 和 messages_en_US.properties
国际化资源文件的命名规则:basename_语言_国家。这里messages代表basename , zh代表语言名,CN代表国家名
两个文件中的内容很简单。messages_zh_CN.properties里
hello={0},\u4F60\u597D\u6B22\u8FCE\u4F60 loginTitle={0},\u606D\u559C\u4F60,{1}
在messages_en_US.properties里
hello={0},Hello,You are welcome loginTitle={0},Congratulation{1}
上面两个文件里,hello和loginTitle表示国际化资源文件的Key 等号后面的value 。。。取值是根据key来取的,这里的{0} {1}表示通配符,需要传值,就这么简单
要实现国际化,还需在配置文件里加入Spring对国际化的管理,Spring中ResourceBundleMessageSource类专门处理国际化,接下来看一下beans.xml
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> <property name="basenames"> <list> <value>messages</value> </list> </property> </bean>注意 : 查看API文档,会发现ResourceBundleMessageSource类中有个setBasenames(String... basenames)的方法,这个方法的参数是一个String类型的数组,String[] basenames。。。这个参数 传入的就是国际化资源文件的basename
, 这里对应的messages 。。。同时在set注入时,碰到参数为数组类型时,可以用<list>
<value></value>
</list>
这种配置。。。
最后看一下测试类。。很简单 直接调用ApplicationContext提供的getMessage方法,传入三个参数,第一个:国际化资源文件的key,第二个:去国际化资源文件中通配符匹配,是一个String[]类型,第三个:Locale.国家
package com.tlf.test; import java.util.Locale; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class SpringTest { public static void main(String[] args) { ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml"); System.out.println(ctx.getMessage("hello", new String[]{"唐三藏","沙悟净"}, Locale.CHINA)); System.out.println(ctx.getMessage("hello", new String[]{"猪八戒"}, Locale.US)); } }
运行程序,最后控制台打印
![](http://img.my.csdn.net/uploads/201304/23/1366695964_1644.jpg)
第二:来看一下AppliactionContext加载多个配置文件
ApplicationContext经常用到的三个实现:
1.ClassPathXmlApplicationContext:从类路径中的XML文件载入上下文定义信息。把上下文定义文件当成类路径资源。
2.FileSystemXmlApplicationContext:从文件系统中的XML文件载入上下文定义信息。
3.XmlWebApplicationContext:从Web系统中的XML文件载入上下文定义信息。
加载多配置很简单,直接使用ApplicationContext ctx = new ClassPathXmlApplicationContext("a.xml","b.xml.....")
括号参数传入多个String类型的参数就行。。。
这句话其实是ApplicationContext预初始化Spring容器中所有的singleton Bean...至于什么是singleton Bean,以及还能配置什么Bean,在下一篇Bean的作用域会说到。。
第三:AppliactionContex对资源访问的支持
1、classpath : 从类路径加载
2、ftp:从网络加载,基于FTP协议加载
3、http:从网络加载,基于http协议加载
这里就介绍一下第一种方式,
在src下建立aaa.txt。。。。内容是
啊啊啊啊,,,你是谁 我是猪八戒
接下来看下主方法,Spring如何加载他。。。
Resource res = ctx.getResource("classpath:aaa.txt"); BufferedReader br = new BufferedReader(new InputStreamReader(res.getInputStream())); String line = null; while((line=br.readLine())!=null){ System.out.println(line);
很简单,用Resource res = ctx.getResource("classpath:aaa.txt"); 这句话就表明加载classpath下aaa.txt文件,接下来的是对其进行的操作
最后控制台打印
![](http://img.my.csdn.net/uploads/201304/23/1366698584_7802.jpg)
今天就写到这,下一篇将阐述Spring中Bean的作用域以及依赖注入P命名空间和嵌套Bean
相关文章推荐
- Spring学习之AppliactionContext与BeanFactory的区别
- InstallShield 2012 Spring新功能试用(4): Custom Action支持PowerShell
- SPRING IN ACTION 第4版笔记-第七章Advanced Spring MVC-002- 在xml中引用Java配置文件,声明DispatcherServlet、ContextLoaderListener
- android EditText长按屏蔽ActionMode context菜单但保留选择工具功能
- Spring学习之Jar包功能介绍(转)
- 使用springBoot的拦截器功能介绍
- ActionContext的介绍
- Spring-Context的注解实现依赖注入功能
- spring 几个很实用功能 介绍
- android EditText长按屏蔽ActionMode context菜单但保留选择工具功能
- spring配置文件ApplicationContext.xml里面class等没有提示功能
- 上下文(context)ActionContext介绍(在Struts2中)
- 介绍 Spring 3.1 M1 中的缓存功能
- spring 支持的功能(function)的范围 -- spring in action
- 重拾Spring之配置bean详解以及AppliactionContext基本功能
- 上下文(context)ActionContext介绍(在Struts2中)
- android EditText长按屏蔽ActionMode context菜单但保留选择工具功能
- SPRING IN ACTION 第4版笔记-第三章ADVANCING WIRING-008-SpEL介绍
- ActionContext介绍
- SSH框架与Action/Service/Dao功能划分介绍