springboot项目中如何从application.properties中取出自定义的配置信息

方式1:@Value

如果仅仅只有一两个配置信息,并且仅仅在很少的地方需要使用,那你可以直接使用@Value注入,比如:

@Value("${spring.cloud.alicloud.oss.endpoint}")
private String endpoint;

想要抽取一个模板的话,那就是@Value("${配置信息路径}"),我来给大家看一下我项目中的配置信息路径:

在这里插入图片描述
对于使用方法,就直接拿着该属性名称用就好,比如上面的就直接用endpoint就能获得配置文件中的值

方式2:配置类(推荐)

如果配置信息很多,或者配置信息需要在不同的地方使用,那配置类是一个不错的选择,我来给大家举一个例子吧:

@ConfigurationProperties(prefix = "weibo")
@Data
@Component
public class WeiboInfoComponent {

    private String clientId;

    private String clientSecret;

    private String redirectUri;

}

其中@Data是lombok的注解,如果你没有用lombok,那你可以创建这几个属性的get以及set方法就可以了,然后@ConfigurationProperties(prefix = "weibo")注解中的prefix属性是前缀,等会我把配置文件中的内容贴出来,你就能看懂了,如果你没有前缀,那就可以直接使用@ConfigurationProperties,里面不用加参数就行,然后@Component是把当前配置类交给spring管理,这样我们就可以直接注入该配置类,然后在任何地方都可以使用了,我让大家看一下我的application.yml配置文件中是怎么写的,如下:

在这里插入图片描述
至于前缀,大家如果还没有明白的话,我再来给大家举一个例子:

在这里插入图片描述
然后大家还需要注意的一点是配置类中的属性名称和配置文件中名称的关系,其中配置类中使用小驼峰命名法,而配置文件中的名称使用-分隔多个单词,例如:

在这里插入图片描述
现在我们来说如何使用,当你需要使用属性值的时候,直接将配置类注入,然后使用getXXX()方法将数据取出来就可以了,我来用上面一直在说的WeiboInfoComponent给大家举一个例子,如下:

在这里插入图片描述

方法3:使用@Value注解结合静态变量

直接上例子吧:

@Component
public class ConstantPropertiesUtils implements InitializingBean {

    // 读取配置文件内容
    @Value("${aliyun.sms.file.accessKeyId}")
    private String accessKeyId;

    @Value("${aliyun.sms.file.accessKeySecret}")
    private String accessKeySecret ;

    @Value("${aliyun.sms.file.signName}")
    private String signName ;

    @Value("${aliyun.sms.file.templateCode}")
    private String templateCode ;

    // 定义公开静态变量
    public static String ACCESS_KEY_ID;
    public static String ACCESS_KEY_SECRET;
    public static String SIGN_NAME;
    public static String TEMPLATE_CODE;

    // 当spring加载之后就会执行本方法
    @Override
    public void afterPropertiesSet() throws Exception {
        // 给上述静态常量赋值
        ACCESS_KEY_ID = accessKeyId;
        ACCESS_KEY_SECRET = accessKeySecret;
        SIGN_NAME = signName;
        TEMPLATE_CODE = templateCode;
    }
}

当项目启动之后,spring扫描到我们这个类,之后会先给下面的几个私有属性赋值,然后就会就会执行InitializingBean接口中的afterPropertiesSet方法,所以我们可以在这个方法中将私有属性的值赋给对应的静态变量,之后我们可以直接使用类名.静态变量名来使用配置文件中的值,至于@Value注解我在方法1中已经说过了,现在来让大家看一下application.properties配置文件中是怎么写的:

在这里插入图片描述
对于使用的话,相比于方法2稍微简单一点,也就是可以直接使用类名.静态变量名来使用配置文件中的值就可以了,如下:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值