


How does springboot read lists, arrays, map collections and objects in yml files?
application.yml defines the list collection
The first way is to use the @ConfigurationProperties
annotation to get all the values of the list collection
type: code: status: - 200 - 300 - 400 - 500
Write the entity class corresponding to the configuration file, What needs to be noted here is that to define the list collection, first define a configuration class Bean
, and then use the annotation @ConfigurationProperties
annotation to obtain the list collection value. Here we will explain the role of the relevant annotations.
@Component Hands over the entity class to Spring management
@ConfigurationProperties(prefix = “type.code”) Read the yml file list
@Data automatically generates getter and setter methods
As shown in the figure below
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; } }
Then where to use For automatic injection, I read this list directly in the startup class. It should be noted that using the list configured in yml requires injecting the object first, and then reading the value in the configuration file through the get method.
@Autowired private TypeCodeConfig typeCodeConfig; Use annotations to inject objects
System.out.println(typeCodeConfig.getStatus()); Call getter Method to read the value
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());
Start springboot We have successfully read all the values of the list collection in the yml file from the console
The second method uses the @value
annotation to obtain all the values of the list collection
The yml file is configured as follows
student: ids: - 7 - 8 - 9
Then create an entity class
@Data public class Student { @Value("${student.ids}") private List<Integer> ids; }
Create a new configuration class for the list attribute
@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; }
Inject in the startup class
@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()); }
Start springboot and we have successfully read all the values of the list collection in the yml file from the console
application.yml defines the array type
yml configuration file is as shown below
dataSync: enable: true type: - "1" - "2" - "3"
Get the array value through @value annotation
@Value("${dataSync.enable.type}") private String[] type;
can also be obtained by creating a configuration class bean and using the @ConfigurationProperties annotation
, as shown in the following figure:
@Data @Component @ConfigurationProperties(prefix = "dataSync.enable") // 配置 文件的前缀 public class InterceptorPathBean { private String[] type; }
yml files can also store objects and collections of objects. The usage method is the same as The basic types are similar.
Simple example:
Define map collection configuration
interceptorconfig: path: maps: name: 小明 age: 24
By creating a configuration class bean, use the @ConfigurationProperties annotation to obtain the map value, as shown in the figure below
@Data @Component @ConfigurationProperties(prefix = "interceptorconfig.path") // 配置 文件的前缀 public class InterceptorPathBean { private Map<String , String> maps; }
Use objects Configuration
student: id: 1 name: Bruce gender: male
Use object collection configuration
students: - id: 1 name: Bruce gender: male - id: 2 name: ... ...
Here I will summarize some important points for you:
1. In the list type yml configuration file, you need to use "- " to form a collection of lists.
2. There is no level limit for the prefix in yml. If it is multi-level, such as demo/code here, the prefix for configuring the ConfigurationProperties annotation in the java class is written as "demo.code"
3. The attribute name supports the hyphen "-" in the yml file, such as four-span. When configuring the attribute in the java class, it needs to be converted to camel case, fourSpan.
4. Java class attributes need to be configured with set and get methods.
The above is the detailed content of How does springboot read lists, arrays, map collections and objects in yml files?. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft

MantisBT
Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

SecLists
SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.