简介:
SpringBoot的
yml
文件,想必大家应该都知道,里面配置了程序的配置文件,好多时候我们会在该文件配置一些我们自己的参数以键值对的方式定义,现在我打包成jar包后我们可以在jar包同级
目录添加application.yml
那么程序就会使用我们创建的配置信息,如果我们需要配置集合应该如何设置,并且我们还存在,集合里面是我们自定义的类又该如何获取呢?
为什么提取配置到Yml:
当我要
配置请求地址时
,我们一般不会固定写在某些类中,
因为怎么不利于后期修改
,如果是已经打包好的jar
那么每一次修改请求地址
时都需要知道到对应类里面修改
,还有就是多个类同时使用请求地址时
,我们应该
把请求地址信息提取到yml里面
这样后期请求地址更改我们只需要,更改yml的请求地址.
获取自定义的配置:
如果有个需求
:现在要定时把库存信息请求到第三方平台中,这个时候我们就需要调用第三方接口回传库存信息等
注意:
SpringBoot使用Scheduled定时任务时需要在@SpringBootApplication
注解类中添加@EnableScheduling
//开启Scheduling
1.普通配置
yml
配置文件:
server:
port: 8089
itmei: #配置自定义请求地址
url: http://localhost:8080
推送业务代码: 举例子没有真的写推送代码主要是为了获取yml数据
@Service
public class YmlDemo {
/**
* 每10秒推送一次
*/
@Scheduled(cron = "1/10 * * * * *")
public void sendStock(){
//推送库存给第三方企业
}
}
获取yml配置中的url:
使用@Value
注解获取
@Value("${itmei.url}")
private String url;
注意
:赋值的参数不能使用static
修饰,因为被static修饰的参数,在类加载的时候是会被优先加载到内存中,所以获取出来的值就会时null
2.集合配置
由于现在我们又和其他企业进行合作所以现在我们推送库存就不是一家企业了,现在要推送多加企业,那么我们可以使用yml配置集合
改造yml:支持多请求地址
等效于
看自己觉得那个方便用那个
创建读取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> urls) {
this.urls = urls;
}
}
效果:
获取配置类的组件注入使用
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"
创建读取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> urls) {
this.urls = urls;
}
}
效果:
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"
创建集合自定义类对象
/**
* @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> users) {
this.users = users;
}
}
效果:
结束:
到这这里就完成了yml的常见配置获取,如果对你有帮助,一键三连,一起加油!!!
ps:
后续代码会提交到gitHub上
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/83818.html