本方法是结合Java配置及XML配置来完成。
首先定义XML配置文件 app.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd "> <util:properties id="app" location="classpath:spittr/props/app.properties"></util:properties> <util:properties id="mess" location="classpath:spittr/i18n/messages_zh_CN.properties"></util:properties> </beans>然后在RootConfig.java配置文件中引入XML文件:
@Configuration
@ImportResource("classpath:spittr/**/app.xml") @ComponentScan(basePackages={"spittr"}, excludeFilters={@Filter(type=FilterType.ANNOTATION,value=EnableWebMvc.class)}) public class RootConfig {}RootConfig.java在用Java配置启动SpringMVC的时候用到:
public class SpittrWebAppInitializer extends
AbstractAnnotationConfigDispatcherServletInitializer { //通常用来配置其它Bean,通常是驱动应用后端的数据层及中间层组件 @Override protected Class<?>[] getRootConfigClasses() { return new Class<?>[]{ RootConfig.class}; } //通常用来配置控制,视图解析器以及处理器映射 @Override protected Class<?>[] getServletConfigClasses() { return new Class<?>[]{WebConfig.class}; }@Override
protected String[] getServletMappings() { return new String[]{"/"}; }}
完成以上配置后,即可读取定义的properties文件中的值,
定义两个properties资源文件,spittr/props/app.properties,spittr/i18n/messages_zh_CN.properties,文件名前为路径,
app.properties内容如下:
spittr.welcome=欢迎来到Spittr世界!
messages_zh_CN.properties内容如下:
spittr=欢迎使用Spittr系统
测试代码:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=RootConfig.class) public class I18nTest { @Value("#{app['spittr.welcome']}") private String wel; @Value("#{mess['spittr']}") private String spit; @Test public void test(){ System.out.println(wel); System.out.println(spit); } }@RunWith的作用是在测试的时候自动创建Spring的应用上下文,注解@ContextConfiguration告诉它需要在测试代码里加载指定的配置文件,即在测试代码中引入了相关的资源文件,因此能正常通过SpEL表达式读取properties文件中的值。
资料参考:《Spring实战(第4版)》