MessageSourceを使いやすくするには? | Java Springの逆引きメモ

Java Springの逆引きメモ

JavaのSpring frameworkのメモを書いていきます!
初心者の勉強ノートなので間違いがあるかもしれませんが、何かヒントになることがあれば幸いです。

SpringではMessageSourceも用意されており、設定ファイルに設定すれば使用できます。

しかし、そのままでは少し使いにくいので使いやすくする方法を見てみましょう!



【Springの設定ファイルのサンプル(applicationContext.xml)】


<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="messages"/>
</bean>


<bean id="sample" class="sample.Sample">
<property name="messageSource" ref="messageSource"/>
</bean>



【Sampleクラス(sample.Sample)】


public class Sample{



public void setMessageSource(MessageSource messages) {
this.messages = new MessageSourceAccessor(messages);
}


public String obtainMsg(){

return this.messages.getMessage("sample.msg", "メッセージのデフォルトです");
}


}



【メッセージファイル(messages_jp.properties)】


sample.msg=サンプルメッセージ




【説明】


特に説明の必要は無いかもしれません。


this.messages = new MessageSourceAccessor(messages);

単純にMessageSourceAccessorでラップしているだけです。

この便利さは、もとのMessageSourceの使い方を見ないと分からないかと思います。


 <MessageSourceの使い方>

 getMessage(sample.msg", null, "メッセージのデフォルトです", Locale.getDefault());


 <MessageSourceAccessorの使い方(再掲)>

 getMessage("sample.msg", "メッセージのデフォルトです");


いくつか引数を入力しなくて良くなっていますよね!

ほんの少しの違いですが、何回も書くと意外と疲れます。

このクラスもうまく使ってみてくださいニコニコ




【おまけ】

SpringにはVMを再起動しなくてもリロードできるメッセージリソースもあります。

 ReloadableResourceBundleMessageSource


また、テスト用にプログラム上で書き換えられるメッセージリソースもあります。

 StaticMessageSource


わざわざ自作するようなことはやめて、まずはこれらが使えないか検討してみましょう!




参考:

・トップ

・DIの設定ファイルで外部ファイル(プロパティファイル)を参照するには?

・DIの設定ファイル内から外部DIファイルを参照するには?

・プロパティファイルをPropertiesクラスのbeanにするには?