2017-06-06 148 views
1

我正在致力于向客户发送电子邮件的服务。 所有的设置,如主机,协议等,以及电子邮件发件人或主题我已经存储在application.properties。主题发送电子邮件

在另一个地方,我有类:

@ConfigurationProperties(prefix = "email.properties") 
public class EmailProperties { 

private String sender; 
private String subject; 

,并从application.properties数据拷贝到这个类,而这个作品非常好...

但是,什么是我的问题。 我想设置主题如:

email.properties.subject=Hello CUSTOMER, thank you for registered. 

和具体的客户名称绑定客户,当我发送电子邮件,如:

Hello Tom Rich, thank you for registered. 

所以我加入类EmailProperties方法:

String getSubjectWithCustomer(User user){ 
...} 

但我不知道如何可以绑定CUSTOMER具体用户。也许我可以这样做:

String getSubjectWithCustomer(User user){ 
    return subject.replaceAll("CUSTOMER", user.getUserName()); 
} 

但我觉得这是愚蠢的解决方案。我想用更好的东西。也许你有一些想法?也许我可以为此使用SpEL?但我不知道如何,因为我到处都找到如何绑定XML文件但不包含aplication.properties的示例。

也许我可以使用SpEL创建一些解析器?

问候。

回答

2

您可以使用Spring MessageSource,您可以在其中定义参数化和本地化的消息。

喜欢的东西:

public String getLocalizedSubject(Object[] params) { 
    return getLocalizedSubject(params, Locale.getDefault()); 
} 

public String getLocalizedSubject(Object[] params, Locale locale) { 
    return messageSource.getMessage("subject", params, locale); 
} 

使用:

Object[] params = new Object[] { user.getUserName() }; 
getLocalizedSubject(params); 
在messages.properties

,并定义主题

subject=Hello {0}, thank you for register.