Springboot yml Map List读取方式

网友投稿 319 2022-08-28


Springboot yml Map List读取方式

目录Springboot yml Map List读取1、配置类集中放置2、配置类单独放置3、List读取4、问题:配置类没有获取到值Springboot yml内list、map组合写法

Springboot yml Map List读取

Springboot 读取yml中的值作为参数,有2种写法:

例子:

已知有如下yml配置:

myapps:

1131f78c313e11e79da3000c298bdf0e: AMS系统

1ae211c543a14cf6981274fec3281f0c: BMS系统

app1: 测试

现在需要将myapps读到http://配置文件作为配置类。有2种做法:

1、配置类集中放置

也就是说应用中设一个配置类,所有涉及yml配置的类都放置在该类中。

@Configuration

@Order(Ordered.HIGHEST_PRECEDENCE)

public class MyConfiguration {

static Logger log = LoggerFactory.getLogger(MyConfiguration.class);

@Bean

public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {

return new PropertySourcesPlaceholderConfigurer();

}

@Value("${px.a.trackerServer}")

String trackerServer = "";

@Value("${px.a.disabled:true}")

boolean disableA = true;

@Bean

@ConfigurationProperties(prefix = "px.client")

ClientConfigInfo clientConfigInfo(){

ClientConfigInfo clientConfigInfo = new ClientConfigInfo();

return clientConfigInfo;

}

@Bean

@ConfigurationProperties(prefix = "px")

MyAppConfiguration myAppConfiguration(){

MyAppConfiguration myAppConfiguration = new MyAppConfiguration ();

return myAppConfiguration;

}

}

这里配置为:

@Bean

@ConfigurationProperties(prefix = "px")

UdsAppConfiguration udsAppConfiguration(){undefined

UdsAppConfiguration udsAppConfiguration = new UdsAppConfiguration();

return udsAppConfiguration;

}

2、配置类单独放置

也就是说把MyAppConfiguration单独作为一个配置类进行单独的组装。

@Component

@ConfigurationProperties(prefix="px", ignoreInvalidFields=true, ignoreUnknownFields=true)

public class MyAppConfiguration {

static Logger log = LoggerFactory.getLogger(MyAppConfiguration.class);

private Map mysapps = new HashMap();

public Map getMyapps() {

return myapps;

}

public void setMyapps(Map myapps) {

this.myapps = myapps;

}

}

3、List读取

(1)yml

myapps:

- 1131f78c313e11e79da3000c298bdf0e: AMS系统

- 1ae211c543a14cf6981274fec3281f0c: BMS系统

- app1: 测试

(2)配置类写法

@Component

@ConfigurationProperties(prefix="px", igjOheujfBnoreInvalidFields=true, ignoreUnknownFields=true)

public class MyAppConfiguration {

static Logger log = LoggerFactory.getLogger(MyAppConfiguration.class);

private List> mysapps = new ArrayList>();

public List> getMyapps() {

return myapps;

}

public void setMyapps(List> myapps) {

this.myapps = myapps;

}

}

4、问题:配置类没有获取到值

该问题的原因很可能是yml中定义的key与配置类中定义的属性名称不一致,导致Springboot自动装配时失败。出现jOheujfB该问题后,一定首先要仔细检查配置类对应属性的名称以及配置类映射的路径。

Springboot yml内list、map组合写法

yml:

myProps:

varmaplist:

key11:

- t1

- t2

- t3

key22:

- t11

- t22

- t33

list:

- topic1

- topic2

- topic3

maps: {key1: 'value1', key2: 'value2'}

MyProps:

@Component

@Data

@Configuration

@PropertySource(value = {"classpath:/bootstrap.yml"}, encoding = "utf-8")

@ConfigurationProperties(prefix = "myProps")

public class MyProps {

private List list;

private Map maps;

private Map> varmaplist;

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:python第三方库xlrd不支持读取.xlsx格式的Excel文件的问题详解
下一篇:Pytest(1)安装与入门(pytest用法)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~