SpringBoot2.X学习之注解把配置文件自动映射到属性和实体类

本文详细介绍了在SpringBoot项目中如何通过不同方式读取配置文件的值,包括直接在Controller中使用@PropertySource和@Value注解,以及通过创建配置类使用@ConfigurationProperties注解将配置文件映射到Bean中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目中使用配置文件主要是为了解决硬编码问题,下面我们就介绍如何获取配置文件中的值

一.在controller中获取配置文件的值

首先在配置文件中加上一个key,value

然后在controller中使用@PropertySource()注解指定配置文件的位置,使用@Value()注解获取配置文件的值

 

启动项目并访问,已经获取到配置文件的值

二.配置文件映射到bean中

有时候我们不一定在controller中使用到配置文件的属性,在其他地方也可能用到,这时候我们就将配置文件做成一个bean,一个配置类,在写配置类的时候就需要用另外一种方式把他注入进来

首先新建一个配置文件实体类,并加上@Component @ConfigurationProperties@PropertySource({"classpath:application.properties"})三个注解,使用@Value()注解获取到属性配置文件中的值,在配置文件中加上对应的字段

@Component
@ConfigurationProperties
@PropertySource({"classpath:application.properties"})
public class ServerSettings {
    @Value("${test.name}")
    private String name;
    @Value("${test.domain}")
    private String domain;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDomain() {
        return domain;
    }

    public void setDomain(String domain) {
        this.domain = domain;
    }
}

然后进行使用,在controller中注入这个实体类(在service等也可以使用)

然后写一个访问方法进行测试:

最后运行并访问测试,成功拿到注入的值

不过这样写稍微有一丢丢的麻烦,在实体类中注入要写test.name,test.domain,前缀test要写两遍,@ConfigurationProperties注解可以将前缀带上,下面注入的时候就不用写前缀了:

注意:当使用前缀的时候就不要使用@Value()注解了,但是这时候属性值必须与配置文件中的相对应,如果使用了@Value()注解启动会报错,如下图所示:

如果不使用@ConfigurationProperties()注解加前缀,也可以不使用@Value()注解,前提是属性名称和配置文件里面的key一一对应,如果不一一对应,就要加@value("${XXX}")获取配置文件中的key,再注入给实体类中的字段

我们加前缀在开发中主要是为了模块之间的区分,比如支付,订单等等,可以新建对应的配置类,

源码地址:https://gitee.com/xuxinsunqizheng/SpringBoot2.0.git 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值