2017-06-06 99 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.