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が発生します。
関連の記事