在Spring中使用属性文件
我是Spring框架的新手。 在我的Spring应用程序中有一些细节,如下所示,需要在属性文件中维护这些细节。
Transaction Name Transaction Id TXT_CCO = 70001 TXT_CCI = 70002 TXT_SSM = 20005
在我的控制器中,有一个动作如下。
@RequestMapping(value = {"/ValidateWalletAmount**"}, method = RequestMethod.GET) public @ResponseBody String validateWalletAmount(@RequestParam("mobile") String mobile, @RequestParam("pin") String merchant_pin, @RequestParam("provider") String provider, @RequestParam("currency_type") String currency_type, @RequestParam("amount") String amount) { //TO DO - Get txnTypeId by provider return "02 | 1000.00 | 0.00"; }
根据请求参数提供程序,我需要获取相关的事务类型id。 例如,如果提供者是TXT_CCO ,则事务类型id应为70001 。
有人可以帮助我实现这一目标
我会说你有两个选择
- 使用
加载属性 - 使用
@PropertySource
和Environment
抽象。
使用
要简单地加载属性文件,您可以使用PropertiesFactoryBean
或更简单的
标记(它使用下面的PropertiesFactoryBean
,但更容易配置)。 有关更多信息,请参见此处
只需将以下内容添加到xml配置中即可
现在,您有一个名为transactions
的Properties
bean,您可以将其注入控制器,之后您可以使用它来获取所需的属性。
@Autowired private Properties transactions;
使用@PropertySource
和Environment
抽象
另一个解决方案是添加带有@PropertySource
的@Configuration
类来加载属性。 之后,您可以使用Environment
来获取属性。 有关详细信息,请参阅参考指南中的“ Environment
部分。
@Configuration @PropertySource("classpath:transaction.properties") public class MyConfiguration {}
在控制器中,您可以使用Environment
来获取属性。
@Autowired private Environment env;
资源支持
当然Spring属性支持可以与Spring的Resource加载方法一起使用。 所以file:
和http:
前缀也起作用,以及应用于使用过的ApplicationContext
的默认加载规则。
假设您的属性文件名是“messages.properties”,在这种情况下,您需要在applicationContext.xml文件中包含类似于以下内容的内容。
确保属性文件位于类路径中。
在您的控制器类中,自动连接messagesource对象
@Autowired private MessageSource messageSource;
要比较事务类型ID,您可以使用类似于以下的代码:
if(provider.trim().equals("TXT_CCO")){ String transactionTypeId=messageSource.getMessage("TXT_CCO", null, Locale.ENGLISH).trim(); }