我正致力于向客户发送电子邮件。 所有设置,如主机,协议等,以及电子邮件发件人或主题我已存储在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.
并在发送电子邮件时将CUSTOMER绑定到具体的客户名称,例如:
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创建一些解析器?
的问候。
答案 0 :(得分: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.