ホームページ  >  記事  >  Java  >  Spring Boot シリーズのプロパティ構成とカスタム プロパティ構成の詳細な紹介

Spring Boot シリーズのプロパティ構成とカスタム プロパティ構成の詳細な紹介

黄舟
黄舟オリジナル
2017-07-24 14:16:271942ブラウズ

Spring Boot を使用するプロセスでは、対応する機能を完了するためにプロジェクトで最小限の構成のみが必要であることがわかります。これは、Spring Boot の各スターターにはデフォルト構成があるためです。 . であり、通常の関数開発にはこれらのデフォルト構成で十分です。

カスタム構成またはデフォルト構成を変更する必要がある場合、Spring Boot には、application.properties で対応する構成を追加および変更するだけの非常に簡単な方法が用意されています。 (Spring Boot の起動時に application.properties のデフォルト設定が読み取られます)

1. デフォルト設定を変更します

例 1. Spring Boot が Web アプリケーションを開発する場合、Tomcat のデフォルトの起動ポートは 8080 です。デフォルトのポートを指定するには、application.properties に次のレコードを追加する必要があります:

server.port=8888
プロジェクトを再起動すると、起動ログが表示されます: Tomcat がポートで開始されました: 8888 (http) 起動ポートは 8888 です。http にアクセスしますブラウザの://localhost:8888で正常にアクセスできます。

例 2、Spring Boot 開発でのデータベース接続情報の構成 (ここでは com.alibaba の druid が使用されています)、application.properties に次のレコードを追加します:

druid.url=jdbc:mysql://192.168.0.20:3306/test
druid.driver-class=com.mysql.jdbc.Driver
druid.username=root
druid.password=123456
druid.initial-size=1
druid.min-idle=1
druid.max-active=20
druid.test-on-borrow=true

上記の 2 つの例は、スターターのデフォルト設定を変更する方法を示しています。モジュール構成。変更する必要がある構成を application.properties に追加するだけです。

2. カスタム プロパティの設定

application.properties のデフォルト設定を変更することに加えて、ここでカスタム プロパティを設定してエンティティ Bean にロードすることもできます。

1. application.properties にカスタムプロパティ設定を追加します

com.sam.name=sam
com.sam.age=11
com.sam.desc=magical sam

2. Bean クラスを記述してプロパティを読み込みます

Sam クラスは、Spring が起動時にクラスをスキャンして Spring に追加できるようにする必要があります。容器。

最初のもの: Spring でサポートされている @Value() を使用してロードします

package com.sam.demo.conf;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

/**
 * @author sam
 * @since 2017/7/15
 */
@Component
public class Sam {

    //获取application.properties的属性
    @Value("${com.sam.name}")
    private String name;

    @Value("${com.sam.age}")
    private int age;

    @Value("${com.sam.desc}")
    private String desc;
    
    //getter & setter
}

2 つ目: @ConfigurationProperties(prefix="") を使用してプレフィックスを設定します。プロパティに注釈は必要ありません。

package com.sam.demo.conf;

import org.springframework.stereotype.Component;

/**
 * @author sam
 * @since 2017/7/15
 */
@Component
@ConfigurationProperties(prefix = "com.sam")
public class Sam {

    private String name;

    private int age;

    private String desc;

    //getter & setter
}

3. コントローラーに Sam Bean を挿入して使用します。

package com.sam.demo.controller;

import com.sam.demo.conf.Sam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author sam
 * @since 2017/7/14
 */
@RestController
public class IndexController {

    @Autowired
    private Sam sam;

    @RequestMapping("/index")
    public String index() {
        System.out.println(sam.getName() + " " + sam.getAge() + " " + sam.getDesc());
        return "index";
    }

}
ブラウザ アクセス: http://localhost:8080/index、コンソールは通常どおり sam の内容を出力します。

3. application.properties プロパティの設定の詳細説明

1. パラメータの参照と乱数メソッドの使用

application.properties では、次のように、${} を通じて他のプロパティの値を直接参照できます。
com.sam.name=sam
com.sam.age=11
com.sam.desc=${name} is ${age} years old.
アプリケーションでは、プロパティで乱数を取得する必要がある場合は、次のように ${random} を使用できます:
#获取随机字符串
com.sam.randomValue=${random.value}

#获取随机字符串:${random.value}
#获取随机int:${random.int}
#获取10以内的随机数:${random.int(10)}
#获取10-20的随机数:${random.int[10,20]}
#获取随机long:${random.long}
#获取随机uuid:${random.uuid}

2. マルチ環境構成

実際の開発では、異なる環境が存在する可能性があります。開発環境、テスト環境、本番環境を含みます。データベース情報、ポート構成、ローカル パス構成など、関連する構成は環境ごとに異なる場合があります。

異なる環境に切り替えるたびに application.properties を変更する必要がある場合、操作は非常に煩雑になります。 Spring Boot ではマルチ環境構成が提供されているため、環境を簡単に切り替えることができます。

application.properties と同じディレクトリに 3 つの新しいファイルを作成します。

application-dev.properties      //开发环境的配置文件
application-test.properties     //测试环境的配置文件
application-prod.properties     //生产环境的配置文件
上記の 3 つのファイルは、それぞれ開発、テスト、運用の構成内容に対応します。 次のステップは、これらの構成を選択的に参照する方法です。

application.properties に追加:

spring.profiles.active=dev
#引用测试的配置文件
#spring.profiles.active=test
#引用生产的配置文件
#spring.profiles.active=prod
spring.profiles.active=dev を追加してアプリケーションを起動すると、dev の設定情報が参照されていることがわかります。
上記の 3 つの設定ファイルは application-{profile}.properties 形式に準拠しており、application.properties に追加された spring.profiles.active=dev の dev は、まさに上記の設定ファイルのプロファイルであることがわかります。特定の環境に応じて瞬時に切り替えられます。

アプリケーションを起動するコマンドでjarパッケージを実行する場合、対応する設定を指定できます。

java -jar demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev

添付: 設定方法と優先順位

这些方式优先级如下:
a. 命令行参数
b. 来自java:comp/env的JNDI属性
c. Java系统属性(System.getProperties())
d. 操作系统环境变量
e. RandomValuePropertySource配置的random.*属性值
f. jar外部的application-{profile}.properties或application.yml(带spring.profile)配置文件
g. jar内部的application-{profile}.properties或application.yml(带spring.profile)配置文件
h. jar外部的application.properties或application.yml(不带spring.profile)配置文件
i. jar内部的application.properties或application.yml(不带spring.profile)配置文件
j. @Configuration注解类上的@PropertySource
k. 通过SpringApplication.setDefaultProperties指定的默认属性

注: コマンドラインパラメータjar パッケージは安全でない可能性があります。次のように、この方法でアプリケーションの起動を禁止するように設定できます:

springApplication.setAddCommandLineProperties(false);

package com.sam.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
//        SpringApplication.run(DemoApplication.class, args);
        SpringApplication springApplication = new SpringApplication(DemoApplication.class);
        //禁止命令行设置参数
        springApplication.setAddCommandLineProperties(false);
        springApplication.run(args);
    }
}

追加:

application.properties のサポートに加えて、 Spring Boot の設定では application.yml もサポートされています。設定方法は次のとおりです:
application.properties の代わりに新しい application.yml を作成します
server:
  port: 9999

com:
  sam:
    name: sam
    age: 11
    desc: magical sam
注: port: 9999 の途中にスペースがあります。yml 構文については、次のとおりです。参照: yml 設定ファイルの使用法

以上がSpring Boot シリーズのプロパティ構成とカスタム プロパティ構成の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。