end0tknr's kipple - web写経開発

太宰府天満宮の狛犬って、妙にカワイイ

Spring Boot for java で設定ファイル( application.properties )の値を参照

ちょっと練習中。

と言っても、今回の場合、application.properties に設定値を記載し、 javaのclassで、@Value("${~}") なアノテーションでDIするだけ

今回の例では、application.properties で設定ファイルを作成していますが application.yml で作成しても、spring bootが自動で認識してくれます

application.yml は、環境によって application-dev.yml , application-test.yml , application-prod.yml のように分割し 環境変数:SPRING_PROFILES_ACTIVE=dev などで切り替えも可能。

以下、サンプルコード

参考url

Spring Boot 使い方メモ - Qiita

設定ファイル( application.properties ) の例

$vi src/main/resources/application.properties

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://cent7.a5.jp:3306/stemmdoc?useSSL=false&zeroDateTimeBehavior=convertToNull
spring.datasource.username=root
spring.datasource.password=

logging.path=C:/home/endo/tmp/
# logging.level.root=DEBUG
# logging.level.org.springframework.web=DEBUG

spring.mvc.view.prefix= /WEB-INF/jsp/
spring.mvc.view.suffix= .jsp

aws.s3.region=AP_NORTHEAST_1
aws.s3.access_key=ないしょ
aws.s3.secret_key=ないしょ
aws.s3.bucketname=test-end0tknr
aws.s3.localtmpdir=c:/home/endo/tmp/

参照するクラスの例

package jp.end0tknr.stemdoc.ctrl;

import javax.sql.DataSource;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.stereotype.Controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

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

    @Value("${aws.s3.region}")  //// ココ
    private String awsS3Region; //// ココ
    
    
    @RequestMapping(value="/TeiFind")
    public String index () {
        logger.info("start index()");

        logger.info(awsS3Region);
        
        logger.info("done index()");
        return "TeiFind";
    }
}