springboot2 配置文件定义${user.name}内容失效问题解决方案

前言

在一个测试项目中个自定义配置文件user.properties,其内容如下:

user.name=zenning
user.address=北京市海淀区
user.email=187435958@qq.com

映射的配置类定义如下:

@Component
@PropertySource(value="classpath:user.properties")
@ConfigurationProperties(prefix="user")
public class User {
    private String address;
    private String email;
    private String name;


    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", address='" + address + '\'' +
                ", email='" + email + '\'' +
                '}';
    }
   
    // get set 方法略

}

SpringBoot 测试类:

@SpringBootTest
@RunWith(SpringRunner.class)
class ApplicationTests {
    @Autowired
    private User user;

    @Test
    void testUserFromConfiguration(){
        System.out.println(user);
    }
}

测试结果是:

User{name='Administrator', address='北京市海淀区', email='187435958@qq.com'}

明明在配置文件里定义的是user.name=zenning, 为何这里输出的结果变成了Administrator,刚开始我也是无法理解,后来查阅资料后才明白加载配置文件时,默认是先读取系统变量的值,恰好我的电脑的名称就是Administrator, 进入dos模式,输入set 看看

C:\Users\Administrator>set
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\Administrator\AppData\Roaming
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
USERNAME=Administrator
USERPROFILE=C:\Users\Administrator
windir=C:\Windows

可以看到USERNAME=Administrator

明白这个之后如何解决呢,修改配置文件里面的key的前缀,

1.修改配置文件

key.name=zenning
key.address=北京市海淀区
key.email=187435958@qq.com

2.修改配置类

自定义配置类里有个注解@ConfigurationProperties(prefix="key") 指定的是key的前缀,

文件文件中原先的前缀是user,修改之后变成key

然后测试下看看结果:

User{name='zenning', address='北京市海淀区', email='187435958@qq.com'}

可以正常得到配置文件参数。

另一种解决方式就是修改配置文件里面key的名称。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值