前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot基础篇配置信息之自定义配置指定与配置内引用

SpringBoot基础篇配置信息之自定义配置指定与配置内引用

作者头像
一灰灰blog
发布2019-03-14 13:35:39
1.9K0
发布2019-03-14 13:35:39
举报
文章被收录于专栏:小灰灰小灰灰

前面两篇文章,分别介绍了如何获取配置信息,区分多环境的配置支持,配置信息的优先级问题,那么掌握这些是否就足够了呢?

  • 如何获取指定文件(即非application-xxx.properties)中的配置信息呢?
  • 配置文件中依赖其他配置文件的参数如何表示?

<!-- more -->

I. 加载自定义配置文件

前面在使用多环境的配置时,通过设置 spring.profiles.active 来选择加载具体的配置文件,如果没有精神洁癖的话,就把自定义的配置文件加上application-前缀,然后用这种方式来加载,当然是可行的

除此之外呢?

1. PropertySource注解

这个注解可以指定你想加载的配置文件,然后读取其中的配置信息, 使用姿势也相对简单

如在根目录下有配置文件 biz.properties

代码语言:txt
复制
biz.token=mytoken
biz.appKey=asdf
biz.appVersion=1
biz.source=xxx.yyy

对应的加载配置的bean为

代码语言:txt
复制
package com.git.hui.boot.properties.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

/**
 * Created by @author yihui in 15:08 18/9/19.
 */
@Data
@Configuration
@PropertySource({"classpath:biz.properties"})
@ConfigurationProperties(prefix = "biz")
public class OtherProperBean {
    private String token;
    private String appKey;
    private Integer appVersion;
    private String source;
}

说明

  • @PropertySource({"classpath:biz.properties"}) : 从根目录下,加载配置文件biz.properties
  • @ConfigurationProperties(prefix = "biz"): 获取配置文件中,前缀为biz的配置

测试相关就不写了,有兴趣的直接自己尝试即可

2. PropertySource 注解不生效问题

接下来需要重点说一下的是,在我自己的测试中,最开始我的配置文件都是yml格式,然后发现上面的配置始终不生效,也不知道啥原因;然后把配置文件换成properties文件之后,就可以了;

至于为什么会有这个问题,先留着,后续有时间深入研究一下

II. 配置内引用

前面的配置中,使用${random.int}这种东西,啥意思?

1. random随机数

在配置文件中,支持通过 ${random} 来生成一些随机值

常见的几种用法如下

代码语言:txt
复制
# 随机字符串
com.kfit.blog.value=${random.value} 

# 随机int
com.kfit.blog.number=${random.int} 

# 随机long
com.kfit.blog.bignumber=${random.long} 

# 10以内的随机数
com.kfit.blog.test1=${random.int(10)} 

# 10-20的随机数
com.kfit.blog.test2=${random.int[10,20]} 

2. 配置引用

在配置中,一个参数需要引用另一个配置参数,可以怎么处理?

  • 使用 ${xxx} 来表示引用配置 xxx的值

代码语言:txt
复制
biz.token=mytoken
biz.appKey=asdf
biz.appVersion=1
biz.source=xxx.yyy
# uuid的值为 mytoken#asdf
biz.uuid=${biz.token}#${biz.appKey}

II. 其他

0. 项目

1. 一灰灰Blog

一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛

2. 声明

尽信书则不如,已上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激

3. 扫描关注

一灰灰blog

QrCode
QrCode

知识星球

goals
goals

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • I. 加载自定义配置文件
    • 1. PropertySource注解
      • 2. PropertySource 注解不生效问题
      • II. 配置内引用
        • 1. random随机数
          • 2. 配置引用
          • II. 其他
            • 0. 项目
              • 1. 一灰灰Blog
                • 2. 声明
                  • 3. 扫描关注
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档