萤火小屋

优律的知识库

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

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

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

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

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学习笔记
  • 文章目录
  • 站点概览
优律

优律

优律的知识库

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