如何使用spring消息PropertyPlaceholderConfigurer传递参数?
Posted
技术标签:
【中文标题】如何使用spring消息PropertyPlaceholderConfigurer传递参数?【英文标题】:How to pass parameters using spring message PropertyPlaceholderConfigurer? 【发布时间】:2018-08-17 19:32:42 【问题描述】:如果属性消息是硬编码的,则编写的代码可以正常工作。相反,我想将动态数据作为参数传递并获取消息。 我开发的代码是:
public class SpringPropertiesUtil extends PropertyPlaceholderConfigurer
private static Map<String, String> propertiesMap;
// Default as in PropertyPlaceholderConfigurer
private int springSystemPropertiesMode = SYSTEM_PROPERTIES_MODE_FALLBACK; //Check system properties if not resolvable in the specified properties.
static final Logger logger = LogManager.getLogger(SpringPropertiesUtil.class);
@Override
public void setSystemPropertiesMode(int systemPropertiesMode)
super.setSystemPropertiesMode(systemPropertiesMode);
springSystemPropertiesMode = systemPropertiesMode;
@Override
protected void processProperties(ConfigurableListableBeanFactory beanFactory, Properties props) throws BeansException
super.processProperties(beanFactory, props);
propertiesMap = new HashMap<String, String>();
for (Object key : props.keySet())
String keyStr = key.toString();
String valueStr = resolvePlaceholder(keyStr, props, springSystemPropertiesMode);
propertiesMap.put(keyStr, valueStr);
public static String getProperty(String name)
return propertiesMap.get(name).toString();
消息属性文件包括:
myProperty=0 how are you
现在,我想传递名称来代替 0。但我做不到。如果要定义任何方法,请告诉我。
【问题讨论】:
【参考方案1】:您可以autowire消息源并使用getMessage方法,例如在控制器中:
...
@Autowired
private MessageSource messageSource;
...
final String[] params = new String[]"Obama";
final String msg = messageSource.getMessage("myProperty", params, LocaleContextHolder.getLocale());
【讨论】:
以上是关于如何使用spring消息PropertyPlaceholderConfigurer传递参数?的主要内容,如果未能解决你的问题,请参考以下文章
Spring-batch:如何在 Spring Batch 中使用 skip 方法捕获异常消息?
如何在spring mvc中使用带有freemarker的消息?
如何使用 Spring Integration 发送 gcm xmpp 消息?