Spring5のプロパティファイルの文字列の引数に値をセットするサンプルです。
確認環境(Spring 5.3.7、Java8、STS 4)
目次 | プロパティファイルの文字列の引数に値をセットする |
プロパティファイル(testFile.properties) | |
設定クラス(AppConfig.java) | |
クラス(Syain.java) | |
実行する / 起動するクラス(MainController.java) / pom.xml |
プロパティファイルの文字列に値をセットする
testFile.propertiesを読み込み文字列の引数に値をセットしてコンソールに表示します。
githubにコードがあります。
https://github.com/ut23405/spring5/tree/master/spring-messagesource
プロパティファイル(testFile.properties)
値を読み込むプロパティファイルです。
#syain.msg
syain.msg={0},名前は{1}です
#syain.hello1
syain.hello1=こんにちは
#syain.name1
syain.name1=suzuki
2行目の{0}に4行目のこんにちは、{1}に6行目のsuzukiが入ります。
設定クラス(AppConfig.java)
package com.example.test1;
import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ResourceBundleMessageSource;
@Configuration
public class AppConfig {
@Bean
Syain syain() {
return new Syain();
}
@Bean
MessageSource msgSource() {
ResourceBundleMessageSource msgSource =
new ResourceBundleMessageSource();
msgSource.setBasename("testFile");
return msgSource;
}
}
@Configurationは、設定クラスであることを示しています。
9,13行目は、@Bean定義です。インスタンスを生成して返すメソッドを作成します。
JavaベースConfigurationです。
クラス(Syain.java)
String getMessage(String code, @Nullable Object[] args, Locale locale) throws NoSuchMessageException; |
2つめの引数は配列のため複数指定できます。
package com.example.test1;
import java.util.Locale;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.context.MessageSourceResolvable;
import org.springframework.context.support.DefaultMessageSourceResolvable;
public class Syain {
@Autowired
MessageSource msgSource;
MessageSourceResolvable hello1 =
new DefaultMessageSourceResolvable("syain.hello1"); //こんにちは
MessageSourceResolvable name1 =
new DefaultMessageSourceResolvable("syain.name1"); //suzuki
public void getName() {
String message = msgSource.getMessage
("syain.msg", //「{0},名前は{1}です」
new MessageSourceResolvable[] { hello1,name1 },
Locale.JAPANESE);
System.out.println(message);
}
}
13,15行目は、{0}と{1}に設定する値を取得しています。
19行目のsyain.msgは、「,名前は です」を表示します。
20行目のhello1とname1は、{0}と{1}にセットされます。
実行する
MainController.javaを右クリックして「実行」→「Java アプリケーション」をクリックすると実行されます。
起動するクラス(MainController.java)
package com.example.test1;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class MainController {
public static void main(String[] args) {
AnnotationConfigApplicationContext context =
new AnnotationConfigApplicationContext(AppConfig.class);
Syain syain = context.getBean(Syain.class);
syain.getName(); //
context.close();
}
}
7行目は、設定ファイルからDIコンテナを生成しています。
9行目は、context.getBeanでDIコンテナからbean(インスタンス)を取得しています。
pom.xml
設定したライブラリです。
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.7</version>
</dependency>
関連の記事