Spring プロパティファイルの文字列に値をセット

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>

関連の記事

Spring Java Configでhello world

△上に戻る