Spring Boot起動時、コンフィグ(環境)ファイルの内容を標準出力する
環境ごとにapplication.ymlを記述すると思います。Spring Boot起動時に環境ファイルの値を標準出力します。
ファイル
application.yml
aws:
s3:
region: ap-northeast-1
bucket: my-test-bucket
access_key_id: hoge
secret_access_key: fuga
以下はapplicatoin.ymlを表すクラスです。
AppConfig.java
package jp.co.confrage.confdisp.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import jakarta.annotation.PostConstruct;
import lombok.EqualsAndHashCode;
import lombok.RequiredArgsConstructor;
import lombok.ToString;
import lombok.extern.slf4j.Slf4j;
@Configuration
@ToString
@RequiredArgsConstructor
@EqualsAndHashCode
@Slf4j
public class AppConfig {
@Value("${aws.s3.region:ap-northeast-1}")
private String region;
@Value("${aws.s3.bucket:my-tset-bucket}")
private String bucket;
@Value("${aws.s3.access_key_id:xxxxx}")
private String accessKeyId;
@Value("${aws.s3.secret_access_key:yyyyy}")
private String secretAccessKey;
@PostConstruct
void print() {
log.info(toString());
}
}
テスト
Spring Boot起動します。
. ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.2.4) 2024-03-29T16:31:15.644+09:00 INFO 19060 --- [ main] j.c.c.confdisp.ConfDispApplication : Starting ConfDispApplication using Java 21.0.1 with PID 19060 (C:\pana\javatest\springboottest\conf-disp\build\classes\java\main started by moriya-h5 in C:\pana\javatest\springboottest\conf-disp) 2022-03-29T16:31:15.648+09:00 INFO 19060 --- [ main] j.c.c.confdisp.ConfDispApplication : No active profile set, falling back to 1 default profile: "default" 2022-03-29T16:31:17.188+09:00 INFO 19060 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port 8080 (http) 2022-03-29T16:31:17.208+09:00 INFO 19060 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2022-03-29T16:31:17.208+09:00 INFO 19060 --- [ main] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.19] 2022-03-29T16:31:17.304+09:00 INFO 19060 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2022-03-29T16:31:17.308+09:00 INFO 19060 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1565 ms 2022-03-29T16:31:17.449+09:00 INFO 19060 --- [ main] j.co.confrage.confdisp.config.AppConfig : AppConfig(region=ap-northeast-1, bucket=my-test-bucket, accessKeyId=hoge, secretAccessKey=fuga) 2022-03-29T16:31:17.923+09:00 INFO 19060 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port 8080 (http) with context path '' 2022-03-29T16:31:17.935+09:00 INFO 19060 --- [ main] j.c.c.confdisp.ConfDispApplication : Started ConfDispApplication in 3.003 seconds (process running for 3.497)
excludeする
機密情報など一部標準出力したくない環境ファイルの情報はexcludeを指定して標準出力しないようにすることが可能です。
@ToString
↓
@ToString(exclude = {"accessKeyId", "secretAccessKey"})
ファイルを保存します。
テスト
Spring Boot起動します。
. ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.2.4) 2024-03-29T16:41:03.852+09:00 INFO 20560 --- [ main] j.c.c.confdisp.ConfDispApplication : Starting ConfDispApplication using Java 21.0.1 with PID 20560 (C:\pana\javatest\springboottest\conf-disp\build\classes\java\main started by moriya-h5 in C:\pana\javatest\springboottest\conf-disp) 2024-03-29T16:41:03.868+09:00 INFO 20560 --- [ main] j.c.c.confdisp.ConfDispApplication : No active profile set, falling back to 1 default profile: "default" 2024-03-29T16:41:05.726+09:00 INFO 20560 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port 8080 (http) 2024-03-29T16:41:05.748+09:00 INFO 20560 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2024-03-29T16:41:05.748+09:00 INFO 20560 --- [ main] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.19] 2024-03-29T16:41:05.840+09:00 INFO 20560 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2024-03-29T16:41:05.842+09:00 INFO 20560 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1874 ms 2024-03-29T16:41:05.938+09:00 INFO 20560 --- [ main] j.co.confrage.confdisp.config.AppConfig : AppConfig(region=ap-northeast-1, bucket=my-test-bucket) 2024-03-29T16:41:06.446+09:00 INFO 20560 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port 8080 (http) with context path '' 2024-03-29T16:41:06.457+09:00 INFO 20560 --- [ main] j.c.c.confdisp.ConfDispApplication : Started ConfDispApplication in 3.491 seconds (process running for 4.024)
下から3行目部分に標準出力されていますが、exclude指定したプロパティは標準出力されていないことが確認できます。
優先順位
application.ymlの設定値や、@Value内でデフォルト値を設定していますが優先順位があります。
- 環境変数
- application.yml
- 初期値
環境変数が設定されている場合、環境変数の値が一番優先されて設定されます。環境変数名は以下のように変換する必要があります。※環境変数を設定したらVSCodeなどは一旦閉じる必要があります
| @Value | 環境変数 |
|---|---|
| (“${aws.s3.region:ap-northeast-1}”) | AWS_S3_REGION |
application.ymlにキーが存在して値が設定されている場合、application.ymlの値が設定されます。
application.ymlにキーが存在しない場合、@Valueで指定したデフォルト値が設定されます。

KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES20xx),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^

