SpringBoot - @PropertySource注解使用详解

写在前面

SpringBoot默认能够读取resources目录下的配置文件,当我们的配置文件不在SpringBoot默认能够读取的目录下怎么办?
@PropertySource,可以加载指定的、非application.properties文件的、未在SpringBoot默认加载目录的、自定义的属性文件(*.properties)到Spring容器中,@PropertySource目前还不支持对YML配置的读取。

加载目录

当我们创建一个SpringBoot项目时,默认在resources目录下就有一个application.properties文件,可以在该文件中进行相关配置。但是在SpringBoot中默认会从四个地方查找application.properties文件。
①。项目根目录下的config目录下
②。项目根目录下
③。resources目录下的config目录下
④。resources目录下
在这里插入图片描述

@PropertySource注解

例:在resource目录下,自定义了一个mallx.properties文件,根据上面的描述可知,该文件不会自动别加载:

mallx.spu.title=大学生白色丝袜
mallx.spu.price=7500
mallx.spu.stock=999

可以使用@PropertySource + @Value 或者 @PropertySource + @ConfigurationProperties,这两种方式完成配置文件的加载和读取。

方式一:@PropertySource + @Value组合使用
@Component
@PropertySource("classpath:mallx.properties")
public class MallxSpu {
    @Value("${mallx.spu.title}")
    private String title;
    @Value("${mallx.spu.price}")
    private Long price;
    @Value("${mallx.spu.stock}")
    private Integer stock;
}
方式二:@PropertySource@ConfigurationProperties组合使用,使用SpringBoot类型安全的属性注入策略进行配置文件的加载。当配置的属性非常多的时候,采用@Value比较繁琐,引入@ConfigurationProperties注解,并配置了属性的前缀,Spring会自动将Spring容器中对应的数据注入到对象对应的属性中。
@Component
@PropertySource("classpath:mallx.properties")
@ConfigurationProperties(prefix = "mallx.spu")
public class MallxSpu {
    private String title;
    private Long price;
    private Integer stock;
}
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cloneme01

谢谢您的支持与鼓励!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值