简介:

   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上

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐