前回記事では、Spring Webで「hello world」を出力するwarファイルを作成し、Tomcat上で動作させました。
今回は、ちょっとした小技としてwarファイル外のapplication.propertiesで設定値を上書きする方法を確認します。本番環境とステージング環境、開発環境など、環境が異なる場合でも同じwarファイルが利用できるようになります。
application.propertiesの作成
まずは、application.propertiesを2つ用意します。
-
1つ目はwarファイル内に同梱されるapplication.propertiesに「server.port=8080」を追加します。

-
2つ目はwarファイル外に配置するapplication.propertiesで、「server.port=8081」を追加します。場所はTomcatの「webapps」フォルダ直下としました。

確認用コントローラを作成
次に、webアプリが保持している「server.port」プロパティ値を出力する「PorpertyController」クラスを作成します。

package xyz.one_cut._5.demo;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class PropertyController {
// プロパティ値を注入
@Value("${server.port}")
private String port;
@GetMapping("/echoProp")
@ResponseBody
public String hello() {
return "port number is " + port;
}
}
TomcatにsetEnv.batを追加
Tomcatのbinフォルダ直下に「setEnv.bat」という名前のファイルを作成すると、Tomcat起動時に自動で実行されるという仕組みがあるので、今回はこれを利用します。
- 以下の内容でsetEnv.batを作成します。環境変数「CATALINA_OPTS」に「spring.config.location=●●」という記載を追加することで、application.propertiesファイルの場所を指定しています。
set "CATALINA_OPTS=%CATALINA_OPTS% -Dspring.config.location=C:\~省略~\apache-tomcat-10.1.54\webapps\application.properties"
動作確認
最後に、war内/外どちらのapplication.propertiesを利用しているかを確認します。
- Tomcatフォルダの「bin/startup.bat」を起動する
- 作成したコントローラのGetMappingアノテーションで指定したパス(http://localhost:8080/demo-0.0.1-SNAPSHOT/echoProp)にアクセスすると、war外のapplication.propertiesの値を利用していることが確認できます。


