如何使用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 安全性获取会话超时消息

Spring-batch:如何在 Spring Batch 中使用 skip 方法捕获异常消息?

如何在spring mvc中使用带有freemarker的消息?

如何使用 Spring Integration 发送 gcm xmpp 消息?

如何使用 Spring Security 在 login.jsp 页面显示登录错误消息?

如何使用 Micrometer 获取 Spring Integration 队列中的消息数?