Springboot工程对于读取配置文件的小探索

正常情况:

一般使用@value("${}")时:
在这里插入图片描述
这样写是可以正常从配置文件中获取到值的。

特殊情况一:(给静态变量加载配置文件值)

在这里插入图片描述
这种情况给静态变量赋值时启动也不会报错,但是取不到值,取出来的都是null。
使用下set方法进行赋值如下:
在这里插入图片描述

这里的set方法不要有static不然依旧取不到,后面的入参随意,这样就可以给静态变量从配置文件获取并赋值了。
但是,原其他路径都为静态变量,在加载时,优先运行,运行结束后才运行非静态set方法,无法拿到预期值

经过一系列的查询发现@PostConstruct这个注解可以解决这个问题。
注解使用场景: 在项目中主要是在Servlet初始化之前加载一些缓存数据等

特点:

  1. 只有一个非静态方法能使用此注解

  2. 被注解的方法不得有任何参数

  3. 被注解的方法返回值必须为void

  4. 被注解方法不得抛出已检查异常

  5. 此方法只会被执行一次

例子:

@Component
@PropertySource("classpath:application.properties")
public class JmsConfig {


    @Value("${NAME.SERVER.ADDR}")
    private String caddr;
    @Value("${TOPIC}")
    private String cTopic;

    public static String NAME_SERVER_ADDR ;

    public static String TOPIC;

    @PostConstruct
    public void readConfig(){
        NAME_SERVER_ADDR = caddr;
        TOPIC = cTopic;
    }

}

这样就达到了在静态变量初始化时就将配置文件中对应的值传入。

暂时这么多,后续发现了其他问题再补充。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值