萤火小屋

优律的知识库

  • 首页
  • 归档
  • 分类
  • 标签
  • 留言
  • 关于

  • 搜索
双指针 力扣 动态代理 Git YAML SpringBoot SpringMVC 回溯算法 分治算法 归并排序 快排 手撕 事务 MySQL索引 MySQL 小技巧 Spring Framework Spring 动态规划 Linux Android 贪心算法 操作系统 进程调度模拟 IPv6 数据库 计算机组成原理 计算机基础 栈 Java 静态路由 路由器 交换机 数字通信 网络工程 计算机网络 Web http 大学学习技巧 程序设计 算法

SpringBoot学习日记-从配置文件中获取数据

发表于 2021-12-20 | 分类于 Spring | 0 | 阅读次数 49

1 ConfigurationProperties注解

1.1 编写对应的实体类

实体类中的字段名要与yaml文件中的节点名一一对应。
@ConfigurationProperties(prefix)注解告诉Spring需要将配置文件中的值映射到该类中,prefix的值要编写yml配置文件中对应的节点名称。@ConfigurationProperties默认从全局配置文件中获取值。
同时请注意,对应的实体类也应添加到Spring容器中,所以应该添加@Component注解。

package cc.fireflyhut.selftech.config;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.Map;

@Component
@ConfigurationProperties(prefix = "user")  // 对应配置文件最外层节点,即user节点
public class YamlConfigHolder {
    // 对应user节点内的username节点
    private String username;
    // 同上
    private List<String> grants;

    private Map<String, Object> info;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public List<String> getGrants() {
        return grants;
    }

    public void setGrants(List<String> grants) {
        this.grants = grants;
    }

    public Map<String, Object> getInfo() {
        return info;
    }

    public void setInfo(Map<String, Object> info) {
        this.info = info;
    }

    @Override
    public String toString() {
        return "YamlConfigTest{" +
                "username='" + username + '\'' +
                ", grants=" + grants +
                ", info=" + info +
                '}';
    }
}

如果对应的类中出现如下图的提示,请到SpringBoot的官方文档中找到配置文件注解处理机依赖添加到pom文件中。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

image.png

1.2 修改yaml配置文件

在yaml配置文件中添加如下内容

user:
  username: mama
  grants:
    - accessSys
    - changeAll
    - shutdown
  info: {age: 16, gender: male, profession: coder}

或者properties文件请使用如下写法。

user.username=mama
user.grants=accessSys, changeAll, shutdown
user.info.age=16
user.info.gender=male
user.info.profession=coder

1.3 编写测试类并运行

@SpringBootTest
class MyYamlTest {

    @Autowired
    private YamlConfigHolder yamlConfigHolder;

    @Test
    public void testGetValueFromYaml() {
        System.out.println(yamlConfigHolder);
    }
}

image.png

2 Value注解

通过@Value注解注入变量,人尽皆知,懒得写了

3 PropertySource注解

仅能从properties配置文件中获取值。它可以不从默认的全局配置文件中获取值,而可以从自定义的配置文件中拿到值,只需要传入配置文件的位置即可。它有一个名为value的参数,需要传入配置文件的位置。其他用法和ConfigurationProperties注解类似。

@PropertySource(value = "classpath:redis.properties")
public RedisConfig {
//...
}
# SpringBoot # YAML
SpringBoot-Yaml配置文件
Git学习笔记
  • 文章目录
  • 站点概览
优律

优律

优律的知识库

67 日志
17 分类
41 标签
E-mail Twitter Instagram
Links
  • CZLisyx - 浮生志
  • Vedfolnir
0%
© 2019 — 2022 萤火小屋——优律的博客网站
网站已勉强运行 
Halo博客系统技术支持