博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringMVC通过注解方式读取properties文件中的值
阅读量:6570 次
发布时间:2019-06-24

本文共 2137 字,大约阅读时间需要 7 分钟。

  hot3.png

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

        

转载于:https://my.oschina.net/daigd/blog/758094

你可能感兴趣的文章