2017-06-06 8 views
1

私は顧客にメールを送信するためのサービスを提供しています。 ホスト、プロトコルなどのすべての設定と、電子メールの送信者または件名をapplication.propertiesに保存しました。別の場所でメールを送信する件名

私はクラスを持っている:

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

private String sender; 
private String subject; 

及びデータは、このクラスにコピーされ、これは非常にうまく機能...

しかし、どのような私の問題があります。 私は例えば対象セットのようになります。だから私は、クラスEmailPropertiesメソッドに追加

Hello Tom Rich, thank you for registered. 

String getSubjectWithCustomer(User user){ 
...} 

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

と私は電子メールを送信するときのように、具体的な顧客名のための顧客をバインド

しかし、私はどのように具体的なユーザーのための顧客をバインドすることができないのか分かりません。おそらく私はこのような何かをすることができます:

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); 
} 

使用:messages.propertiesで

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

そして、対象を定義

subject=Hello {0}, thank you for register. 
関連する問題