Spring プロパティファイルから値を読み込む(@value)

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

目次 プロパティファイルから値を読み込む
  プロパティファイル(testFile.properties)
  1.起動するクラス(MainController.java)
  2.設定ファイル(applicationContext.xml)

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

1.testFile.propertiesから2行読み込みます。
2.取得した1行目の値をMainController.javaで取得しコンソールに表示します。
3.取得した2行目の値をapplicationContext.xmlに値を渡して画面にhtmlファイルを表示します。

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

プロパティファイル(testFile.properties)

値を読み込むプロパティファイルです。

#testFile
syain.name1=suzuki
file.suffix1=.html

文字コードはISO-8859-1です。
日本語を入力する場合はエディタから行います。
Eclipse プロパティファイルで日本語を使用する方法

1.起動するクラス(MainController.java)

@Valueアノテーションでプロパティファイルから値を取得します。

package com.example.test1;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

/**
 * http://localhost:8881/spring5-mvc-properties/abc
 */
@Controller
public class MainController {

	@Value("${syain.name1}")
	private String testName1;
	
	@GetMapping("/abc")
	public String hello(Model model) {
		System.out.println(testName1); // suzuki
		model.addAttribute("moji", "hello world!");
		return "/test1/index";
	}
}

14行目は、@Valueアノテーションでプロパティファイルから値を取得(syain.name1=suzukiのsuzuki)し、15行目の変数に値をセットします。
19行目は、取得した値をコンソールに表示します。

2.設定ファイル(applicationContext.xml)

value="${xxx}"でプロパティファイルから値を取得します。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:p="http://www.springframework.org/schema/p"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context 
        https://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc
        https://www.springframework.org/schema/mvc/spring-mvc.xsd">

	<context:component-scan
		base-package="com.example.test1" />

	<context:property-placeholder location="classpath*:config/*.properties"/>
	
	<mvc:view-resolvers>
		<mvc:bean-name />
		<bean class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
			<property name="templateEngine" ref="templateEngine" />
			<property name="characterEncoding" value="UTF-8" />
			<property name="forceContentType" value="true" />
			<property name="contentType" value="text/html;charset=UTF-8" />
		</bean>
	</mvc:view-resolvers>

	<bean id="templateResolver"
		class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver">
		<property name="prefix" value="/WEB-INF/testView/" />
		<!--  <property name="suffix" value=".html" />-->
		<property name="suffix" value="${file.suffix1}" />
		<property name="templateMode" value="HTML" />
		<property name="characterEncoding" value="UTF-8" />
	</bean>

	<bean id="templateEngine"
		class="org.thymeleaf.spring5.SpringTemplateEngine">
		<property name="templateResolver" ref="templateResolver" />
		<property name="enableSpringELCompiler" value="true" />
	</bean>
</beans>
context:property-placeholder

18行目のcontext:property-placeholderで、JavaクラスやBean定義ファイルからプロパティファイル中の値にアクセスできるようになります。
34行目は、testFile.propertiesから値(file.suffix1=.htmlの.html)を取得します。
一致したファイルがない場合は、java.io.FileNotFoundExceptionが発生します。

関連の記事

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

△上に戻る