0
点赞
收藏
分享

微信扫一扫

【SpringBoot】yml配置集合,集合自定义对象,Map结构数据获取


简介:

   SpringBoot的​​yml​​​文件,想必大家应该都知道,里面配置了程序的配置文件,好多时候我们会在该文件配置一些我们自己的参数以键值对的方式定义,现在我打包成jar包后我们可以在​​jar包同级​​​目录添加​​application.yml​​那么程序就会使用我们创建的配置信息,如果我们需要配置集合应该如何设置,并且我们还存在,集合里面是我们自定义的类又该如何获取呢?

【SpringBoot】yml配置集合,集合自定义对象,Map结构数据获取_spring boot

为什么提取配置到Yml:

   当我要​​配置请求地址时​​​,我们​​一般不会固定写在某些类中,​​​因为怎么​​不利于后期修改​​​,如果是​​已经打包好的jar​​​那么​​每一次修改请求地址​​​时都需要知道到​​对应类里面修改​​​,还有就是​​多个类同时使用请求地址时​​​,我们​​应该​​​把​​请求地址信息提取到yml里面​​这样后期请求地址更改我们只需要,更改yml的请求地址.

获取自定义的配置:

​如果有个需求​​:现在要定时把库存信息请求到第三方平台中,这个时候我们就需要调用第三方接口回传库存信息等

1.普通配置

​yml​​配置文件:

server:
port: 8089

itmei: #配置自定义请求地址
url: http://localhost:8080

【SpringBoot】yml配置集合,集合自定义对象,Map结构数据获取_java_03

推送业务代码: 举例子没有真的写推送代码主要是为了获取yml数据

@Service
public class YmlDemo {

/**
* 每10秒推送一次
*/
@Scheduled(cron = "1/10 * * * * *")
public void sendStock(){
//推送库存给第三方企业

}
}

获取yml配置中的url:

使用​​@Value​​注解获取

Value("${itmei.url}")
private String url;

【SpringBoot】yml配置集合,集合自定义对象,Map结构数据获取_spring boot_04


​注意​​​:赋值的参数不能使用​​static​​​修饰,因为被static修饰的参数,在类加载的时候是会被优先加载到内存中,所以获取出来的值就会时​​null​

【SpringBoot】yml配置集合,集合自定义对象,Map结构数据获取_自定义_05

2.集合配置

      由于现在我们又和其他企业进行合作所以现在我们推送库存就不是一家企业了,现在要推送多加企业,那么我们可以使用yml配置集合

改造yml:支持多请求地址

【SpringBoot】yml配置集合,集合自定义对象,Map结构数据获取_java_06


等效于

【SpringBoot】yml配置集合,集合自定义对象,Map结构数据获取_spring boot_07


看自己觉得那个方便用那个

​创建读取yml组件类​

/**
* @author Itmei
* @Date 2022/8/28 11:20
* @Version 1.0
* 用于获取yml的配置文件
*/
@Component /**添加为组件*/
@ConfigurationProperties(prefix = "itmei")/**获取yml前缀为itmei的配置 */
public class ConfigBean {

//参数名称要对上yml的名称
public List<String> urls;

public List<String> getUrls() {
return urls;
}

public void setUrls(List<String>) {
this.urls = urls;
}
}

效果:

获取配置类的组件注入使用

【SpringBoot】yml配置集合,集合自定义对象,Map结构数据获取_javascript_08

2.Map配置:

改造yml:现在要通过不同企业走不同的请求逻辑我们使用​​map方式​​来标明该请求属于那个企业

itmei-map: #配置自定义请求地址Map
urls:
yz: "http://localhost:8080"
wm: "http://127.0.0.1:8088"
hm: "http://127.0.0.1:10086"

【SpringBoot】yml配置集合,集合自定义对象,Map结构数据获取_spring boot_09

​创建读取yml组件类​

/**
* @author Itmei
* @Date 2022/8/28 11:20
* @Version 1.0
* 用于获取yml的配置文件
*/
@Component /**添加为组件*/
@ConfigurationProperties(prefix = "itmei-map")/**获取yml前缀为itmei-map的配置 */
public class ConfigMapBean {

//参数名称要对上yml的名称
public Map<String,String > urls;

public Map<String, String> getUrls() {
return urls;
}

public void setUrls(Map<String, String>) {
this.urls = urls;
}
}

效果:

【SpringBoot】yml配置集合,集合自定义对象,Map结构数据获取_javascript_10

3.自定义的集合类配置:(如List< User >)

​改造yml​​​:现在要通过不同企业走不同的请求逻辑我们使用​​自定义类​​来标明该请求属于那个企业

itmei-list-bean:
users:
- name: yz
url: "http://localhost:8080"
- name: wm
url: "http://127.0.0.1:8088"
- name: hm
url: "http://127.0.0.1:10086"

【SpringBoot】yml配置集合,集合自定义对象,Map结构数据获取_java_11

​创建集合自定义类对象​

/**
* @Author Itmei
* @Date 2022/8/28 11:50
* @Version 1.0
*/
public class User {
private String name;
private String url;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getUrl() {
return url;
}

public void setUrl(String url) {
this.url = url;
}
}

​创建读取yml组件类​

/**
* @Author Itmei
* @Date 2022/8/28 11:52
* @Version 1.0
* 用于获取集合自定义对象
*/
@Component/**添加为组件*/
@ConfigurationProperties(prefix = "itmei-list-bean")/**获取yml前缀为itmei-list-bean的配置 */
public class ListBeanConfig {
/**
* 获取自定义的集合类配置User
*/
private List<User> users;

public List<User> getUsers() {
return users;
}

public void setUsers(List<User>) {
this.users = users;
}
}

效果:

【SpringBoot】yml配置集合,集合自定义对象,Map结构数据获取_java_12

结束:

到这这里就完成了yml的常见配置获取,如果对你有帮助,一键三连,一起加油!!!

​ps:​​后续代码会提交到gitHub上


举报

相关推荐

0 条评论