Spring5 プロパティファイルから値を読み込む

Spring5の外部ファイルから値を読み込むサンプルです。
確認環境(Spring 5.3.7、Java8、STS 4)

目次 Spring5 外部ファイルから値を読み込む概要
  1.起動するクラス(MainController.java)
  2.設定クラス(AppConfig.java)
  3.プロパティファイルとクラス(testFile,Syain)
  実行する
  pom.xml

Spring5 外部ファイルから値を読み込む概要

今回作成したファイルです。

処理の流れ

・SyainからtestFile.propertiesを読み込みコンソールに文字列を表示します。

githubにコードがあります。
https://github.com/ut23405/spring5/tree/master/spring5-messagesource

1.起動するクラス(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(インスタンス)を取得しています。

2.設定クラス(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です。

3.プロパティファイルとクラス(testFile,Syain)

testFile.properties

プロパティファイルです。

#syain.msg
syain.msg=\u540D\u524D\u306F{0}\u3067\u3059
#syain.name1
syain.name1=suzuki

2行目は、「名前は{0}です」と書いてあります。

Syain.java

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 name1 = 
			new DefaultMessageSourceResolvable("syain.name1");

	public void getName() {
		String message = msgSource.getMessage
				("syain.msg",
				new MessageSourceResolvable[] { name1 },
				Locale.JAPANESE);
		System.out.println(message);
	}
}

12,13行目は、{0}に設定します。
17行目のsyain.msgは、「名前は です」を表示します。
18行目のname1は、{0}の値を表示します。

実行する

MainController.javaを右クリックして「実行」→「Java アプリケーション」をクリックすると実行されます。

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>

関連の記事

Spring5 Java Configでhello world

△上に戻る