springboot配置文件可以是properties,也可以是yml類型,它們都支持字符型,也支持列表list類型,假定在yml配置文件中支持列表類型格式如下:
application.yml
demo:
type:
code:
- 200
- 201
- 300
- 400
- 501
編寫對應的java類
package com.xxx.mongodemo.config;
import java.util.List;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
@Configuration
@ConfigurationProperties(prefix = "demo.type")
public class TypeCodeConfig {
private List<String> code;
public void setCode(List<String> code) {
this.code = code;
}
public List<String> getCode() {
return code;
}
}
在其他地方使用:
package com.xxx.mongodemo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import com.xxx.mongodemo.config.TypeCodeConfig;
@SpringBootApplication
public class App implements CommandLineRunner{
public static void main( String[] args ){
SpringApplication.run(App.class, args);
}
@Autowired
private TypeCodeConfig config ;
@Override
public void run(String... args) throws Exception {
System.out.println(config.getCode());
}
}
這里直接在啟動類中讀取這個list,這里需要注意,使用yml中配置的list需要先將對象注入,然后通過get方法讀取它的值。
打印信息如下所示,正確讀取了list的值:
2021-04-14 14:17:41.292 INFO 16140 --- [ main] com.xxx.mongodemo.App : Started App in 2.059 seconds (JVM running for 2.396)
[200, 201, 300, 400, 501]
有的地方直接通過數(shù)組(String[])去接收,而不是使用的是List<String>,看個人的需要,直接使用List其實是可以的,而且后續(xù)遍歷和取值也很方便。
這里總結(jié)一些特別的地方:
1、list類型的yml配置文件中,需要使用"-"來組成一個列表集合。
2、yml中的前綴沒有層級限制,如果是多層級,比如這里的demo/code,在java類中配置ConfigurationProperties注解的prefix就寫作"demo.code"
3、屬性名稱在yml文件中支持連字符"-",比如four-span,在java類中配置屬性就需要轉(zhuǎn)為駝峰式,fourSpan。
4、java類屬性需要配置set,get方法。