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

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

PHPz
PHPz転載
2023-05-11 10:46:102545ブラウズ

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 までご連絡ください。