如何在apache + spring中动态加载属性文件的值

问题描述:

我是一个新手,在spring中使用驼鹿2.17。我有从web服务接收的错误代码的处理器和我配置在属性文件中的错误描述等如何在apache + spring中动态加载属性文件的值

myproject.errorCode=1001:error1 description, 1002:error2 description, 1003:.... 

目前我使用属性注射读取值myproject.errorCode和解析所有的errorCode与描述这是工作正常。但是,错误代码列表非常庞大,并且将其保留在单个属性中非常困难。所以我想分裂样

myproject.errorCode.1001=error1 description 
    myproject.errorCode.1002=error2 description 
    myproject.errorCode.1003=error3 description 
    ..... 

的属性,我想根据从Web服务接收到像

String errorCodeRecieved = myWebService.getErrorCode(); 
    String errorString = "myproject.errorCode."; 
    String errorDescription = something.getProperty(errorString + errorCodeRecieved); 

我怎样才能实现这个设施的错误代码在我的处理器类读取属性。在此先感谢

你可以做一个可用MessageSource在你的情况下,

@Bean 
MessageSource myMessageSource() { 
    ResourceBundleMessageSource r = new ResourceBundleMessageSource(); 
    r.setBasenames("/messages/sample"); 
    r.setDefaultEncoding("UTF-8"); 
    return r; 
} 

然后使用这个在您的处理器获取像适当的消息:

messageSource.getMessage(code, null, null, locale) 
+0

您好,感谢您的快速响应。你的解决方案工作正常。但问题是我需要添加属性文件在类路径和生产中我需要配置我的属性文件的类路径之外。我找不到在我的类路径之外指定文件路径的方法。没有方法在** ResourceBundleMessageSource **中设置文件名。 – Shameer

+0

我想你可以用户ReloadableResourceBundleMessageSource,也许你可以找到更多的信息在它的用法[这里](https://*.com/questions/9035588/dynamically-load-files-on-classpath-using-reloadableresourcebundlemessagesource) –

+0

嗨, @Panayiotis Poularakis感谢您的回放......运作良好..设置基本名称作为我的属性文件路径+属性名...标记为接受的答案... – Shameer