


Wie liest Springboot Listen, Arrays, Kartensammlungen und Objekte in YML-Dateien?
May 11, 2023 am 10:46 AMapplication.yml definiert die Listensammlung
Die erste Möglichkeit besteht darin, die Annotation @ConfigurationProperties
zu verwenden, um alle Werte der Listensammlung abzurufen@ConfigurationProperties
注解获取list集合的所有值
type: code: status: - 200 - 300 - 400 - 500
编写配置文件对应的实体类,这里需要注意的是,定义list集合,先定义一个配置类Bean
,然后使用注解@ConfigurationProperties
注解来获取list集合值,这里给大家讲解下相关注解的作用
@Component 将实体类交给Spring管理
@ConfigurationProperties(prefix = “type.code”) 读取yml文件中的list
@Data 自动生成getter和setter方法
如下图所示
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; } }
然后在要使用的地方自动注入,我是直接在启动类中读取这个list,需要注意,使用yml中配置的list需要先将对象注入,然后通过get方法读取配置文件中的的值。
@Autowired private TypeCodeConfig typeCodeConfig; 使用注解将对象注入
System.out.println(typeCodeConfig.getStatus()); 调用getter方法读取值
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文件中list集合的所有值了
第二种方式使用@value
注解获取list集合的所有值
yml文件配置如下
student: ids: - 7 - 8 - 9
然后创建一个实体类
@Data public class Student { @Value("${student.ids}") private List<Integer> ids; }
再新建一个对list属性的配置类
@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文件中list集合的所有值了
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; }
Bean
und verwenden Sie dann die Annotation @ConfigurationProperties
, um den Listensammlungswert zu erhalten. Hier erklären wir die Rolle der relevanten Annotationen
@Component Übergibt die Entitätsklasse an Spring Management@ConfigurationProperties(prefix = „type.code“) Liest die Liste in der YML-Datei
@Data generiert automatisch Getter- und Setter-Methoden
Wie in der Abbildung unten gezeigt
interceptorconfig: path: maps: name: 小明 age: 24
Dann wird es automatisch dort eingefügt, wo es verwendet werden soll. Ich habe diese Liste direkt in der Startup-Klasse gelesen. Beachten Sie, dass Sie bei Verwendung der in yml konfigurierten Liste zuerst das Objekt einfügen und dann den Wert darin lesen müssen Konfigurationsdatei über die get-Methode.
@Autowired private TypeCodeConfig typeCodeConfig; Annotationen verwenden, um Objekte in
System.out.println(typeCodeConfig.getStatus()) einzufügen ; Rufen Sie die Getter-Methode auf, um den Wert zu lesen.
@Data @Component @ConfigurationProperties(prefix = "interceptorconfig.path") // 配置 文件的前缀 public class InterceptorPathBean { private Map<String , String> maps; }
@value
und ruft alle Werte der Listensammlung ab. Die Konfiguration der YML-Datei lautet wie folgt: student: id: 1 name: Bruce gender: male
students: - id: 1 name: Bruce gender: male - id: 2 name: ... ...
Das obige ist der detaillierte Inhalt vonWie liest Springboot Listen, Arrays, Kartensammlungen und Objekte in YML-Dateien?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

So implementieren Sie verteilte Sperren mit Redis in SpringBoot

Vergleich und Differenzanalyse zwischen SpringBoot und SpringMVC

So lösen Sie das Problem, dass Springboot nach dem Einlesen in ein JAR-Paket nicht auf die Datei zugreifen kann

Wie SpringBoot Redis anpasst, um die Cache-Serialisierung zu implementieren

So implementieren Sie Springboot+Mybatis-plus, ohne SQL-Anweisungen zum Hinzufügen mehrerer Tabellen zu verwenden

So erhalten Sie den Wert in application.yml in Springboot

Praktisches Tutorial zur SpringBoot+Dubbo+Nacos-Entwicklung

So erstellen Sie ein SpringBoot+MyBatisPlus-Schnellentwicklungsgerüst
