ホームページ > Java > &#&チュートリアル > springboot は yml ファイル内のリスト、配列、マップ コレクション、オブジェクトをどのように読み取るのでしょうか?

springboot は yml ファイル内のリスト、配列、マップ コレクション、オブジェクトをどのように読み取るのでしょうか?

PHPz
リリース: 2023-05-11 10:46:10
転載
2771 人が閲覧しました

application.yml はリスト コレクションを定義します

最初の方法は、@ConfigurationProperties アノテーションを使用してリスト コレクション

type:
  code:
    status:
      - 200
      - 300
      - 400
      - 500
ログイン後にコピー

のすべての値を取得することです。構成ファイルに対応するエンティティ クラスを記述します。ここで注意する必要があるのは、リスト コレクションを定義するには、まず構成クラス Bean を定義し、次にアノテーション @ConfigurationProperties を使用することです。リストコレクションの値を取得するためのアノテーション ここで、関連するアノテーションの役割について説明します

  • @Component Spring管理にエンティティクラスを引き継ぎます

  • @ConfigurationProperties(prefix = “type.code”) yml ファイル リストを読み取ります

  • @データによりゲッター メソッドとセッター メソッドが自動的に生成されます

下の図に示すように

package com.o2o.data;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

import java.util.List;

@Component
@ConfigurationProperties(prefix = "type.code") // 配置文件的前缀
@Data
public class TypeCodeConfig {
    private List<String> status;

    public void setStatus(List<String> status){
        this.status = status;
    }
    public List<String> getStatus(){
        return status;
    }
}
ログイン後にコピー

次にどこで使用するか自動インジェクションの場合、スタートアップクラスでこのリストを直接読み取ります。ymlで構成されたリストを使用するには、最初にオブジェクトをインジェクトする必要があることに注意してください。次に、get メソッドを通じて構成ファイル内の値を読み取ります。

  • @Autowired private TypeCodeConfig typeCodeConfig; アノテーションを使用してオブジェクトを挿入

  • System.out.println(typeCodeConfig.getStatus()); ゲッターを呼び出す値を読み取る方法

package com.o2o;

import com.o2o.data.TypeCodeConfig;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
@MapperScan("com.o2o.mapper")
public class AutoTestApplication implements CommandLineRunner {

	public static void main(String[] args) {
		SpringApplication.run(AutoTestApplication.class, args);
	}

	@Autowired
	private TypeCodeConfig typeCodeConfig;

	@Override
	public void run(String... args) throws Exception {
		System.out.println(typeCodeConfig.getStatus());
ログイン後にコピー

springbootの起動コンソールからymlファイル内のリストコレクションの値をすべて読み取ることができました

springboot は yml ファイル内のリスト、配列、マップ コレクション、オブジェクトをどのように読み取るのでしょうか?

2 番目のメソッドは、@value アノテーションを使用してリスト コレクションのすべての値を取得します。

yml ファイルは次のように構成されます

student:
  ids:
    - 7
    - 8
    - 9
ログイン後にコピー

次に、エンティティ クラスを作成します

@Data
public class Student {
    @Value("${student.ids}")
    private List<Integer> ids;

}
ログイン後にコピー

リスト属性の新しい構成クラスを作成します

@Component
@ConfigurationProperties(prefix = "student")
@Data
public class TypeCodeConfig {

private List<Integer> ids;

   public void setIds(List<Integer> ids) {
       this.ids = ids;
   }
      public  List<Integer> getIds(){
       return ids;
}
ログイン後にコピー

スタートアップ クラスに挿入します

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
@MapperScan("com.o2o.mapper")
public class AutoTestApplication implements CommandLineRunner {

	public static void main(String[] args) {
		SpringApplication.run(AutoTestApplication.class, args);
	}

	@Autowired
	private TypeCodeConfig typeCodeConfig;
	
	@Override
	public void run(String... args) throws Exception {

		System.out.println(typeCodeConfig.getIds());
	}
ログイン後にコピー

SpringBoot を開始すると、すべてが正常に読み取られますコンソールからの yml ファイル内のリスト コレクションの値

springboot は yml ファイル内のリスト、配列、マップ コレクション、オブジェクトをどのように読み取るのでしょうか?

#application.yml は配列タイプを定義します

#yml 構成ファイルは次のようになります以下に示す

dataSync: enable: true type: - "1" - "2" - "3"
ログイン後にコピー

@value アノテーションを使用して配列値を取得する

@Value("${dataSync.enable.type}")
 private String[] type;
ログイン後にコピー

は、次に示すように、構成クラス Bean を作成し、

@ConfigurationProperties アノテーション を使用して取得することもできます。次の図:

@Data
@Component
@ConfigurationProperties(prefix = "dataSync.enable") // 配置 文件的前缀
public class InterceptorPathBean
{  
    private String[] type;
}
ログイン後にコピー

yml ファイルには、オブジェクトとオブジェクトのコレクションも格納できます。使用方法は と同じです。基本的な型は似ています。

簡単な例:

マップ コレクションの構成を定義する

interceptorconfig:
  path:
    maps:
      name: 小明
      age: 24
ログイン後にコピー

以下の図に示すように、構成クラス Bean を作成することにより、@ConfigurationProperties アノテーションを使用してマップ値を取得します。
@Data
@Component
@ConfigurationProperties(prefix = "interceptorconfig.path") // 配置 文件的前缀
public class InterceptorPathBean
{
    private Map<String , String> maps;
}
ログイン後にコピー

オブジェクトの構成を使用する

student:
  id: 1
  name: Bruce
  gender: male
ログイン後にコピー

オブジェクト コレクションの構成を使用する

students: 
  - id: 1
    name: Bruce
    gender: male
  - id: 2
    name: ...
    ...
ログイン後にコピー

ここでいくつかの重要な点を要約します:

1. リストに yml 構成ファイルと入力します。 、リストのコレクションを形成するには「-」を使用する必要があります。

2. yml のプレフィックスにはレベル制限はありませんが、ここでのデモ/コードのようにマルチレベルの場合、Java クラスの ConfigurationProperties アノテーションを設定するためのプレフィックスは「demo. code"

3. 属性名は、four-span など、yml ファイル内のハイフン「-」をサポートします。Java クラスで属性を設定する場合は、キャメルケースの fourSpan に変換する必要があります。

4. Java クラスの属性は、set メソッドと get メソッドを使用して設定する必要があります。

以上がspringboot は yml ファイル内のリスト、配列、マップ コレクション、オブジェクトをどのように読み取るのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート