SpringbootのMessageSourceについて
こんにちは管理人(@vip___p)です。
今回はJavaのフレームワークのSpringbootについてです。
Springbootの特有の処理でMessageSourceというものがあります。
今回はそちらについて触れていこうと思います。
今回やりたいことはプロパティファイルを参照して
文字列を組み合わせてメッセージの出力を行うことです。
またプロパティファイル内の使用方法で{0}の部分(プレイスホルダ)に
値を代入する方法も可能なので、そちらも合わせて確認行っていきたいと思います。
備忘録です。
strtus2の参照方法については下記を参考にしてください。
struts2のvalidation.xmlとgetTextについて
下記のような方は是非参考にしてください。
- strutsからSpringのリプレイスを想定している方
- Springの学習を行いたい方
MessageSourceの使用方法
message.propertiesを参照するので準備します。
message.properties name=田中 hello={0}さん、こんにちは!
Hello.javaはこんな感じです。
@RestController public class Hello { @Autowired MessageSource messagesource; public String getValue(String key) { ResourceBundle resources = ResourceBundle.getBundle("message.resources"); return resources.getString(key); } String value = getValue("name"); @RequestMapping ("/show") public void showMessage(){ String message = messagesource.getMessage("hello", new String[]{value}, Locale.JAPAN); } }
出力結果
田中さんこんにちは!
振り返り
messagesource.getMessage("hello", new String[]{value}, Locale.JAPAN);
第一引数には呼び出したいプロパティの値
第二引数には代入したい値
@Autowiredを忘れて苦労しました。
現在はコントローラーで使用していますが
logicなどで使用する際はインスタンス化するのではなく
@Autowiredを使用することに注意してください。
値が空のエラーが出るときはこの辺りを一度確認してみるのも良いと思います。
ResourceBundleを使用することでプロパティの値を代入することができました。
ResourceBundleを使用せず直接値を代入することは当然可能です。
messagesource.getMessage("hello", new String[]{"山田"}, Locale.JAPAN);
出力結果
山田さんこんにちは!
まとめ
MessageSourceについて簡単にまとめました。
@Autowiredも重要なので忘れないように注してください。
簡単に使用することが出来ました。
Spring特有の機能についてあまり触れる機会がありませんが、
また追記して行きたいと思います。
皆さんの参考になれば幸いです。
ディスカッション
コメント一覧
まだ、コメントがありません