在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

有人可以帮助我实现这一目标

我会说你有两个选择

  1. 使用加载属性
  2. 使用@PropertySourceEnvironment抽象。

使用

要简单地加载属性文件,您可以使用PropertiesFactoryBean或更简单的标记(它使用下面的PropertiesFactoryBean ,但更容易配置)。 有关更多信息,请参见此处

只需将以下内容添加到xml配置中即可

  

现在,您有一个名为transactionsProperties bean,您可以将其注入控制器,之后您可以使用它来获取所需的属性。

 @Autowired private Properties transactions; 

使用@PropertySourceEnvironment抽象

另一个解决方案是添加带有@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(); }