Heim > Java > javaLernprogramm > Hauptteil

Wie liest Springboot Listen, Arrays, Kartensammlungen und Objekte in YML-Dateien?

PHPz
Freigeben: 2023-05-11 10:46:10
nach vorne
2678 Leute haben es durchsucht

application.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
Nach dem Login kopieren

编写配置文件对应的实体类,这里需要注意的是,定义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;
    }
}
Nach dem Login kopieren

然后在要使用的地方自动注入,我是直接在启动类中读取这个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());
Nach dem Login kopieren

启动springboot我们已经从控制台成功读取到yml文件中list集合的所有值了

Wie liest Springboot Listen, Arrays, Kartensammlungen und Objekte in YML-Dateien?

第二种方式使用@value注解获取list集合的所有值

yml文件配置如下

student:
  ids:
    - 7
    - 8
    - 9
Nach dem Login kopieren

然后创建一个实体类

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

}
Nach dem Login kopieren

再新建一个对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;
}
Nach dem Login kopieren

在启动类中注入

@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());
	}
Nach dem Login kopieren

启动springboot我们已经从控制台成功读取到yml文件中list集合的所有值了

Wie liest Springboot Listen, Arrays, Kartensammlungen und Objekte in YML-Dateien?

application.yml定义数组类型

yml配置文件如下图所示

dataSync: enable: true type: - "1" - "2" - "3"
Nach dem Login kopieren

通过@value注解获取数组值

@Value("${dataSync.enable.type}")
 private String[] type;
Nach dem Login kopieren

也可以通过创建配置类bean,使用@ConfigurationProperties注解

@Data
@Component
@ConfigurationProperties(prefix = "dataSync.enable") // 配置 文件的前缀
public class InterceptorPathBean
{  
    private String[] type;
}
Nach dem Login kopieren

Schreiben Sie die Entitätsklasse, die der Konfigurationsdatei entspricht Hier ist zu beachten, dass die Listensammlung definiert wird. Definieren Sie zunächst eine Konfigurationsklasse 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
Nach dem Login kopieren

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;
}
Nach dem Login kopieren
https://img.php.cn/upload/article/000/000/164/168377317445386.png" alt="Wie liest Springboot Listen, Arrays, Kartensammlungen und Objekte in YML-Dateien?“ />

Der zweite Die Methode verwendet die Annotation @value und ruft alle Werte der Listensammlung ab. Die Konfiguration der YML-Datei lautet wie folgt:

student:
  id: 1
  name: Bruce
  gender: male
Nach dem Login kopieren

Erstellen Sie dann eine Entitätsklasse

students: 
  - id: 1
    name: Bruce
    gender: male
  - id: 2
    name: ...
    ...
Nach dem Login kopieren
und erstellen Sie dann eine neue Konfigurationsklasse für die Listenattribut 🎜rrreee🎜Inject 🎜rrreee in der Startup-Klasse 🎜Beim Starten von Springboot haben wir alle Werte der Listensammlung in der YML-Datei erfolgreich von der Konsole gelesen🎜🎜

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!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage