外部設定#2


学習目標

  • @ConfigurationProperties
  • 関連鍵バインディング
  • bean登録&DI
  • 他のbeanへ
  • フレキシブルバインド
  • @DurationUnit
  • @Validated検証
  • @ConfigurationProperties


    可能であれば@Value宣言でPropertyを使うより
    @ConfigurationProperties操作では、以下の機能を使用することをお勧めします.
    以下の機能は@Value操作で無効にできます.

    関連するアイテムを結合


    複数のpropertyを組み合わせて読み込むことができます.

    ex1. 複数の同じキーを持つアトリビュートを作成するには


  • 名前:name-String
  • 年齢:age-int
  • 名+姓:fullName(プレースホルダを使用)-String
  • ex2. 属性セットの処理に使用するクラスの作成

  • @を使用してプロパティの説明を構成します.
    パラメータとして
  • キーを使用します.すなわち、例では「ringer 0310」が与えられる.
  • Getter&Setterを作成します.
  • 属性値は、パラメータが
  • @ConfigurationPropertiesのKeyと同じです.propertiesファイルで、クラスのフィールドに値をバインド(渡す)役割のクラスを検索します.
  • bean登録&DIから他のbeanへ


    上記で作成したpropertyバンドル処理クラスをbeanとして登録し、他のbeanに注入して利用できます.

    ex1. ApplicationRunner

  • アプリケーション・ランナ:アプリケーションの実行後に実行するタスクを定義します.
  • DI(@AutoWired)で
  • ex 2で生成された属性グループ処理クラスのオブジェクトを入力し、Getterメソッドを使用して各属性のフィールドが値をバインド(転送)されているかどうかをコンソールで確認します.
  • ex2. Application

  • @EnableConfigurationProperties
  • 受信可能パラメータ
  • .propertiesから使用するpropertyキー
  • .
  • クラス、propertiesに関連する鍵がマージされました
  • アプリケーションを実行するとspringfootは@E n a b l e ConfigurationPropertiesのタスクを自分で処理するので、別途説明する必要はありません.しかし、この自動化プロセスを実現するために、
  • をパラメータとする関連鍵のクラスはbeanまたは
  • として登録されている.
    参照されるのは、
  • パラメータで受信されたKeyの属性である.propertiesファイル(ex.application.propertiesなど)に存在する必要があります.

  • ex3. アプリケーションの実行結果


    ex3. アプリケーションRunnerが実装したタスクはコンソール上で良好な出力を得ていることがわかる.

    フレキシブルバインド


    propertyのkeynameを定義する場合は、次の方法を使用できます.
  • Kebab Case | hyphen
  • ex) linger.context-path
  • Snake Case | underscore(= underbar)
  • ex) linger.context_path
  • Camel Case|2番目の単語から大文字
  • ex) linger.contextPath
  • すべて大文字
  • ex) linger.CONTEXTPATH
  • @DurationUnit


    任意の時間情報propertyを定義し、この値を受け入れる場合.

    時間情報リソースの追加



    ex2. グループ処理クラスへのコードの追加



    ex3. ApplicationRunnerクラスへのコードの追加



    ex4. アプリケーションの実行結果



    @DurationUnit無効化方法


    時間情報構成の変更



    グループ処理クラスの変更



    @Validated


    property値を検証できます.
  • NotEmpty
  • NotNull
  • etc
  • 次の依存が必要です.
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-validation</artifactId>
            </dependency>

    ex.NotEmpty検証


    name propertyのNotEmpty検証を行います.

    ex1. グループ処理クラスへのコードの追加


    クラスに@Validatedを追加し、nameフィールドに@NotEmpty宣言を追加します.

    ex2. 変更率


    名前property値を故意に空にします.

    ex3. アプリケーションの実行結果


    次の図のように、エラーが発生しやすく、原因をお知らせします.