SpringbootのMessageSourceについて

こんにちは管理人(@vip___p)です。

今回は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も重要なので忘れないように注してください。

皆さんの参考になれば幸いです。