この記事とドキュメントによると:
Spring コンテナーの初期化中に、MessageSourceAware インターフェースを実装するクラスがあれば、Spring は setMessageSource(MessageSource messageSource) セッター メソッドを介して自動的に MessageSource をクラスに注入します。
しかし、そのオブジェクトのアクセス メソッドはあまり役に立たないので、そのインターフェイスをオーバーライドして、さらに便利なメソッドをいくつか追加したいと考えました。
public class MessageSourceEx implements org.springframework.context.MessageSource {
/**
*
*/
@Override
public String getMessage(MessageSourceResolvable source, Locale locale)
throws NoSuchMessageException {
return this.getMessage(source, locale);
}
/**
*
*/
@Override
public String getMessage(String key, Object[] params, Locale locale)
throws NoSuchMessageException {
return this.getMessage(key, params, locale);
}
/**
*
*/
@Override
public String getMessage(String key, Object[] params, String locale, Locale locale2) {
return this.getMessage(key, params, locale, locale2);
}
/**
*
* @param locale Locale
* @param key Key
* @param params Parameters
* @return
*/
public String getMessage(Locale locale, String key, Object... params) {
return this.getMessage(key, new Object[] {params}, locale);
}
/**
*
* @param locale Locale
* @param key Key
* @return
*/
public String getMessage(Locale locale, String key) {
return this.getMessage(key, null, locale);
}
}
しかし、問題は、MessageSourceAware
インターフェイスが MessageSource に対して正確にセッター メソッドを必要とし、オーバーライドされたクラスをパラメーターとして取得できないことです。反対側から、MessageSource をオブジェクトにキャストできません。例外で失敗します。
そのようなことを実装することは可能ですか?
ありがとうございました