最初の方法は、@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ファイル内のリストコレクションの値をすべて読み取ることができました
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 ファイル内のリスト コレクションの値
#application.yml は配列タイプを定義します#yml 構成ファイルは次のようになります以下に示すdataSync: enable: true type: - "1" - "2" - "3"
@Value("${dataSync.enable.type}") private String[] type;
@ConfigurationProperties アノテーション を使用して取得することもできます。次の図:
@Data @Component @ConfigurationProperties(prefix = "dataSync.enable") // 配置 文件的前缀 public class InterceptorPathBean { private String[] type; }
簡単な例:
interceptorconfig: path: maps: name: 小明 age: 24
@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 サイトの他の関連記事を参照してください。