本方法是结合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版)》