06 グローバル設定ファイル application.yaml の詳細説明

       Spring Boot には、Spring アプリケーションの開発プロセスが大幅に簡素化される多数の自動構成が用意されており、ユーザーが Spring Boot プロジェクトを作成すると、構成がなくてもプロジェクトをスムーズに実行できます。もちろん、ユーザーは構成ファイルを使用して、必要に応じて Spring Boot のデフォルト設定を変更することもできます。

       SpringBoot はデフォルトで以下の 2 つのグローバル設定ファイルを使用し、ファイル名は固定されています。

  • アプリケーションのプロパティ
  • アプリケーション.yml

       Spring Boot の設定ファイルとしては application.properties と application.yaml の両方を利用できますが、記述形式が異なり、Spring Boot 起動時に自動的に読み込まれます。もちろん同時に使用することもできますが、同階層ディレクトリの読み込み順序としては、まずapplication.propertiesを読み込み、次にapplication.yamlを読み込みます。設定ファイルの格納パスを次の図に示します。

       このセクションでは、application.properties の構文と使用法を詳しく紹介します。

YAML の概要

       YAML の正式名は YAML Ain't Markup Language で、XML や JSON よりも構成ファイルとして適したデータ中心のマークアップ言語です。YAML ファイル形式は、Spring Boot でサポートされる JSON スーパーセット ファイル形式です。従来のプロパティ構成ファイルと比較して、YAML ファイルはデータを核としており、より直観的でコンピューターが認識しやすいデータシリアル化形式です。application.yaml ファイルは application.properties と同じように機能します。

       YAML をプロパティ構成ファイル (.yml または .yaml で終わる) として使用したい場合は、SnakeYAML ライブラリをクラスパスに追加する必要があります。Spring Boot の spring-boot-starter-web と spring-boot-starter の両方に SnakeYAML ライブラリが統合されています。これら 2 つのスターターのいずれかがプロジェクトで参照されている限り、Spring Boot は自動的に SnakeYAML ライブラリをクラスパスに追加します。

       以下は、単純な application.yml プロパティ構成ファイルです。

server:
  port: 8081

YAML 構文

YAML の構文は次のとおりです。

キー: 値

サンプルコード

サーバ:

    ポート: 8081

    パス: /hello

YAML の構文は次のとおりです。

  • インデントを使用して階層関係を示します。
  • インデントにはタブは使用できません。スペースのみが使用できます。
  • インデントされたスペースの数は重要ではありませんが、兄弟要素は左揃えにする必要があります。
  • 大文字と小文字を区別。
  • 文字列を引用符で囲む必要はありません。追加する場合は、文字列の内容がエスケープされる/エスケープされないことを示します。

例えば:

spring:
  profiles: dev
  datasource:
    url: jdbc:mysql://127.0.01/banchengbang_springboot
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver

授業の準備:


注: を使用して依存関係を追加する必要があります

<dependency>
     <groupId>org.projectlombok</groupId>
     <artifactId>lombok</artifactId>
     <optional>true</optional>
 </dependency>

 ユーザークラス:

@Data
@AllArgsConstructor
@Component
@ConfigurationProperties(prefix = "user")
public class User {
    private String username;
    private Integer age;
    private Book book;
    private Date birth;
    private String[] hobby;
    private List<String> booksName;
    private Map<String, Object> books;
    private Set<Double> salary;
    public User() {
        System.out.println("创建user bean");
    }
}

テストクラス:

@SpringBootApplication
public class SpringbootApplication {

    public static void main(String[] args) {

        //1、返回IOC容器
        ConfigurableApplicationContext run = SpringApplication.run(SpringbootApplication.class, args);

        User user =run.getBean("user",User.class);
        System.out.println(user.getUsername());
        System.out.println(user);
    }
}

YAMLの一般的な書き方

YAML は次の 3 つのデータ構造をサポートします。

  • オブジェクト: キーと値のペアのコレクション
  • 配列: 順番に並べられた値のセット
  • リテラル: 単一の分割できない値
  • 文字列を引用符で囲む必要はありません。追加する場合は、文字列の内容がエスケープされる/エスケープされないことを示します。

YAML ファイル内の値のタイプは異なり、異なる方法で記述されます。 

YAMLリテラルの書き方

      リテラルは、数値、文字列、ブール値、日付、日付、ブール値、文字列、数値、null などの単一の分割できない値を指します。
      プロパティでは、 user.username= "xiatian"、user.age= 32 など、「key[=]value の形式を使用してキーと値のペアを表します (スペースは省略できません)。

user.username=xiatian は良いです

ユーザー.年齢=32

user.birth=2020/09/10 13:14:15

一重引用符と二重引用符の違い:

二重引用符: 文字列内の特殊文字はエスケープされません。特殊文字は、表現したい意味として使用されます。

user.username="xiatian \n は良いです"

出力は次のとおりです。

  • 夏天
  • いいね

一重引用符: 文字列内の特殊文字をエスケープします。特殊文字は最終的には単なる通常の文字列データになります。

user.username= ' xiatian \n は良いです'

出力結果は次のとおりです: xiatian \n は良好です

テスト結果は次のとおりです。

YAML オブジェクト、配列、リスト、マップ、セットのインライン書き込みとインデント 

       YAML では、オブジェクトに複数のプロパティを含めることができ、各プロパティはキーと値のペアです。YAML では、オブジェクトに対してインデント記述とインライン記述という 2 つの記述方法が提供されていますが、インデントかインラインかにかかわらず、コロンの後にはスペース
が必要であることに注意してください

  • インライン書き込み

ユーザーオブジェクトの インライン書き込み:コロンの後のスペースに注意してください

ユーザー: {   ユーザー名: xiatian いいです、   年齢: 32、   誕生日: 2020/09/10 13:14:15、


  #  Book オブジェクトの インライン書き込み:コロンの後のスペースに注意してください

  本: {本名: スプリングブーツ 、本の価格:102}、

  #配列の インライン書き込み:コロンの後の スペースに注意してください

  趣味: [バスケットボール、サッカー、バレーボール]、

  # リストの インライン記述:コロンの後のスペースに注意してください
  Booksname: [computer Foundation, JavaEE Framework, springboot],

  # マップ 行の記述:コロンの後のスペースに注意してください
  Books: {key1: spring, key2: springmvc, key3: springboot,key4: springcloud,
          chinese: {0:生きている, 1:孫子の兵法, 2:歌の書, hz:生きている, szbf:孫子の兵法, sj:歌の書}},

  # インライン書き込みの設定 :コロンの後のスペースに注意してください
  給与: [6000,7000,8000]
}

  • インデント

ユーザーオブジェクトの インデント:コロンの後のスペースに注意してください

ユーザー: ユーザー
  名: 'xiatian は良い'
  年齢: 32
  誕生日: 2020/09/10 13:14:15
  本:
    本名: springboot
    本価格: 102
  趣味:
    - バスケットボール -
    サッカー-
    バレーボール
  本名:
    - コンピューターの基礎
    - JavaEE フレームワーク -
    springboot
  本:
    key1: spring
    key2: springmvc
    key3: springboot key4
    : springcloud
    chinese :
      0: Alive
      1 : 孫子の兵法
      2: 歌書
      hz: アライブ
      szbf: 孫子の兵法
      sj: 歌書
  給与:
    - 6000
    - 7000
    - 8000

  • インラインとインデントの組み合わせ

ユーザー:
  ユーザー名: 'xiatian は良いです'
  年齢: 32
  誕生日: 2020/09/10 13:14:15
  本:
    本名: springboot
    本価格: 102
  趣味: [バスケットボール、サッカー、バレーボール]
  本名: [コンピューター基礎、JavaEE フレームワーク、スプリングブート] 本:
  key1
    : spring
    key2: spring mvc
    key3: springboot key4
    : springcloud
    chinese :
      0: Alive
      1: Sun T zu's Art of War
      2: The Book of Songs
      hz: Alive
      szbf: Sun Tzu's Art of War
      sj: The Book of Songs
  給与: [6000,7000,8000]

テスト結果は次のとおりです。

ユーザー(

    username=xiatian は良いですね、

    年齢=32、

    book=Book{bookName='springboot', bookPrice=102.0},

    誕生=2020年9月10日木曜日13:14:15 CST、

    趣味=[バスケットボール、サッカー、バレーボール]、

    BooksName=[コンピュータ基盤、JavaEE フレームワーク、スプリングブート],

    本={

     中国語={

       key1=スプリング、

       key2=springmvc、

       key3=スプリングブーツ、

       key4=春の雲、

       0=生きている、

       1=孫子の兵法、

       2=歌の本、

       Hz=生きている、

       szbf=孫子の兵法、

       sj=歌の本}

    }、

    給与=[6000.0, 7000.0, 8000.0]

);
 

YAMLの組織構造

YAML ファイルは、「--- 」を      ドキュメント間の区切り文字として使用して 1 つ以上のドキュメントで構成でき、各ドキュメントは互いに干渉することなく独立しています。YAML ファイルにドキュメントが 1 つだけ含まれている場合は、「--- 区切り文字を省略できます。

---
代表第一个yml文档中缩进写法
website:
  name: bianchengbang
  url: www.biancheng.net
---
代表第二个yml文档中缩进写法和行内写法都有
website: {name: bianchengbang,url: www.biancheng.net}
pets:
  -dog
  -cat
  -pig
---
代表第三个yml文档中缩进写法和字面量写法
pets: [dog,cat,pig]
name: "zhangsan \n lisi"
---
代表第四个yml文档中是字面量写法
name: 'zhangsan \n lisi'

07Spring Boot 構成バインディング

https://blog.csdn.net/qq_41946216/article/details/124771388?spm=1001.2014.3001.5501

おすすめ

転載: blog.csdn.net/qq_41946216/article/details/124770687