springMVCのプロパティファイルを読込む方法

spring

以前「多言語対応化メッセージリソースをロケールを使って読込む方法」を紹介しました。今回は多言語対応を必要としないプロパティファイルの読み込みを解説します。

[スポンサーリンク]

springMVCにもstruts等のMVCフレームワークと同じようにプロパティファイルの読み込みクラスが用意されています。
プロパティファイルの読み込みは「多言語対応のメッセージリソース」読み込みよりも簡単に実装できると思います。

この章でやること

プロパティファイルを読み込みます。

spring設定ファイル(servlet-context.xml)の記述

こちらをspring設定ファイルに追記します。
プロパティファイル「application.properties」を読み込む設定です。

    <bean id="applicationProperties"
       class="org.springframework.beans.factory.config.PropertiesFactoryBean">
       <property name="locations">
           <list>
               <value>classpath:application.properties</value>
           </list>
       </property>
    </bean>

プロパティファイルの追加

resources配下に「application.properties」ファイルを作成します。

spring-properties1

application.properties

app.test = this is test!!

プロパティファイルをプログラム内で読み込む

コントローラクラス内で、プロパティファイルを読み込んで、JSPで表示していきます。

コントローラクラス

@Controller
public class HomeController {
    private static final Logger logger =
            LoggerFactory.getLogger(HomeController.class);

    @Autowired
    private Properties applicationProperties;

    /**
     * application.properties を読み込むメソッドです。
     */
    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String home(Locale locale, Model model) {

        String message = 
                applicationProperties.getProperty("app.test");
        logger.info("message : " + message);

        model.addAttribute("message", message );
        return "home";
    }
    
}

jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<html>
<head>
	<title>Home</title>
</head>
<body>
<h1>
	Hello world!  
</h1>

<P>  message : ${message} </P>
</body>
</html>

ダウンロード

GitHubでサンプルソースを公開しています。こちらからご自由にダウンロードして下さい。

実行結果

上記のコントローラクラスをローカルサーバで実行して、ブラウザから以下URLを指定して下さい。
http://localhost:8080/app/

spring-properties2

解説

コントローラクラス内の「applicationProperties.getProperty("app.test")」で取得したい値のKeyを指定します。

メッセージリソースの取得とプロパティファイルの取得は一見似ていますが、使うクラスが異なってきます。
メッセージリソースは、ReloadableResourceBundleMessageSourceクラスを使います。
プロパティファイルは、PropertiesFactoryBeanクラスを使います。

springMVCのバージョン

org.springframework-versionは、3.1.0を使っています。
javaは、1.7.13を使っています。

最後に

プロパティファイルの取得をspringを使うことでjunitでのテストがすごく簡単になります。
(junit用のプロパティファイルを用意できるので。)

プロパティファイルは、本番で使うものと、junt用を必ずわけて管理することをおススメします。
それでは!