SpringBootの2つの構成ファイルの構文を本当に理解していますか?

springbootを使用する場合、springbootは多くの構成ファイルを提供します。これらの構成ファイルがspringbootによって自動的にアセンブルされると、すべてアセンブルされます。フレームワークを使用する場合、構成なしでスターターをインポートするだけで済みます。ファイルを使用する準備ができました。

構成ファイル

彼は私たちのためにそれを構成しているが、時には我々は、デフォルト値を設定するためにそれを使用する必要はありません。Springbootは、デフォルトの設定ファイル、修正するために2つの設定ファイルを提供してくれますapplication.propertiesapplication.ymlファイルを。あなたが支払う必要があります注意。設定ファイルの名前は固定されています。これらの2つの構成ファイルのいずれかがspringboot構成のデフォルト値を変更できますが、唯一の違いは構文です。

構成ファイルのパス:構成ファイルは、src / main / resourcesディレクトリまたはclasspath / configの下に配置する必要があります。
ここに画像の説明を挿入します

このブログでは、これら2つのファイルの構文について個別に説明します。

yml構文

YmlはYAML(YAML Ai n't Markup Language)言語のファイルであり、データ中心であり、json、xmlなどよりも構成ファイルに適しています。

Ymlは、springbootのデフォルト値を変更できるだけでなく、Javaオブジェクトとのデータバインディングの参照ファイルとしても使用できます。

1.基本的な文法

k :(スペース)v:キーと値のペアのペアを表します(スペースが存在する必要があります)。
階層関係はスペースのインデントによって制御されます。左揃えのデータの列である限り、それらはすべて次の場所にあります。同じレベル

server:
  port: 8090

2.YAMLでサポートされる3つのデータ構造

文字列:通常の値(数値、文字列、ブール値)
k:v:文字通り直接書き込む;
文字列のデフォルトでは一重引用符または二重引用符を追加する必要はありません;
"":二重引用符;文字列内の特殊文字をエスケープしません文字;特殊文字は、
名前の意味になります: "zhangsan \ n lisi":出力; zhangsan newline lisi
'':一重引用符;特殊文字はエスケープされ、特殊文字は最終的には通常の文字列データ
名になります: 'zhangsan \ n lisi ':出力; zhangsan \ n lisi

オブジェクト、マップ(属性と値)(キーと値のペア):
k:v:オブジェクトの属性と値の関係を次の行に書き込みます;インデント方法
はまだk:v
であることに注意してください例としてpersonという名前のマップを取り上げます。ymlを記述する2つの方法:

従来の文章:

person:
	lastName: zhangsan 
	age: 20

インラインライティング:

person: {
    
    lastName: zhangsan,age: 18}

配列(リスト、セット):
配列内の要素を表すための使用価値

従来の文章:

pets: 
	‐ cat 
	‐ dog 
	‐ pig

インラインライティング

pets: [cat,dog,pig]

3.構成ファイルの値の挿入

上記の3つのデータ構造に関して、ymlは純粋な構成ファイルではないと考える人もいるかもしれません。これらのマップとリストの用途は何ですか?javaオブジェクトとデータバインドできます。初期化値が何かである場合もあります。これらの値をymlファイルに入れることができるので、操作とメンテナンスが改善され、Javaコードで関連する構成を変更する必要がありません。

javaBean: getメソッドとsetメソッドはここでは省略されています

package com.gzl.cn.bean;
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * 将配置文件中配置的每一个属性的值,映射到这个组件中
 * @ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定;
 *      prefix = "person":配置文件中哪个下面的所有属性进行一一映射
 *
 * 只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能;
 *  @ConfigurationProperties(prefix = "person")默认从全局配置文件中获取值;
 *
 */
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
    
    

    private String lastName;
    private Integer age;
    private Boolean boss;
    private Date birth;
    private Map<String,Object> maps;
    private List<Object> lists;
    private Dog dog;

}

犬のオブジェクト

package com.gzl.cn.bean;

public class Dog {
    
    

    private String name;
    private Integer age;

}

application.yml構成ファイル

server:
  port: 8090
  
person:
    lastName: hello
    age: 18
    birth: 2017/12/12
    maps: {
    
    k1: v1,k2: v2}
    boss: true
    lists:
      - lisi
      - zhaoliu
    dog:
      name: 小狗
      age: 12
    last-name: zhangsan 

単体テスト

package com.gzl.cn;

import com.gzl.cn.bean.Person;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.ApplicationContext;
import org.springframework.test.context.junit4.SpringRunner;


/**
 * SpringBoot单元测试;
 *
 * 可以在测试期间很方便的类似编码一样进行自动注入等容器的功能
 *
 */
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringBoot02ConfigApplicationTests {
    
    

	@Autowired
	Person person;

	@Test
	public void contextLoads() {
    
    
		System.out.println(person);
	}

}

この時点で、彼がデータをJavaオブジェクトに正常にバインドしていることがわかります。 ここに画像の説明を挿入します

プロパティ構文

1.構成ファイルの値の挿入

application.propertiesファイル

server.port=8090

person.age=18
person.last-name=zhangsan
person.birth=2017/12/12
person.maps.k1=v2
person.maps.k2=v3
person.boss=true
person.lists=guitar,sing,play
person.dog.age=11
person.dog.name=www

この部分では、上記のpersonクラスを使用して実験を行い、yml構成をプロパティファイルに置き換えるだけです。
プロジェクトを再度実行すると、オブジェクト間のデータバインディングを完了できます。

ここに画像の説明を挿入します

このブログでは、データバインディングのグローバル構成クラスの紹介についてのみ説明し、次のブログでは、Javaオブジェクトのデータバインディング用に指定されたファイルをロードする方法について説明します。

おすすめ

転載: blog.csdn.net/weixin_43888891/article/details/110749409