springboot Java中读取配置文件中的内容,并将其赋值给静态变量的方法

本文介绍如何在SpringBoot结合Dubbo微服务架构中,通过InitializingBean接口实现配置文件动态赋值给静态变量。通过`@Value`注解读取`application.properties`中的配置,并在TestConstConfig类中进行设置。只需几步,即可让其他类无障碍访问配置值。

提前:springboot + dubbo微服务架构

在 组件服务 中需要获取配置文件并赋值给static修饰的变量方法

主要用到spring中的InitializingBean接口,重写afterPropertiesSet方法即可

具体代码:

1、在业务服务的application.properties中配置

data.test.value=这边是需要的值

2、 在组件服务中创建类,获取并重写afterPropertiesSet赋值到静态变量中

@Configuration
public class TestConstConfig  implements InitializingBean {

    /**
    * 配置文件中的值
    */
    @Value("${data.test.value}")
    private String testValue;

    /**
    * 静态变量
    */  
    public static String constValue;

    @Override
    public void afterPropertiesSet() throws Exception {
        constValue = this.testValue;
    }
}

 3、在spring.factories中配置TestConstConfig  

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
xx.xx.xx.TestConstConfig

4、如果其它类的静态方法中需要用到此配置值,直接调用即可

public class TestUtil{

    public static void testConstMethod(){
        System.out.println(TestConstConfig.constValue);
    }

}

亲测可用。

Spring Boot 可以通过多种方式使用配置文件给变量赋值,以下是几种常见的方法: ### 使用 `@Value` 注解 `@Value` 注解可以从配置文件读取属性值赋值给变量。使用时需要使用 “ ${} ” 的格式读取,否则只是把字符串赋值给了变量。示例代码如下: ```java package com.example.demo; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class TestController { @Value("${server.port}") private int port; @RequestMapping("/hi") public String postConstruct() { return "Hi," + port; } } ``` 在上述代码中,`@Value("${server.port}")` 从配置文件读取 `server.port` 的值赋值给 `port` 变量 [^2]。 ### 使用配置类给组件中的静态变量赋值 可以结合 `@PostConstruct` 注解和配置类来给组件中的静态变量赋值。示例代码如下: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; @Component public class RestTemplateUtil { @Autowired public PropertiesUtil propertiesUtil; private static String appKey; @PostConstruct public void init (){ appKey = propertiesUtil.getIoAppKey(); } } ``` 在上述代码中,`@PostConstruct` 注解的 `init` 方法会在对象创建完成依赖注入后执行,从而将配置文件中的值赋给静态变量 [^3]。 ### 定义专门的配置读取赋值静态变量 可以定义一个配置类,专门读取配置文件的值赋值静态变量。示例代码如下: ```java import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class StaticFieldConfig { @Value("${default.advancetime}") private String advancetime; @Value("${default.openstatus}") private String openstatus; @Bean public void initAdvancetime() { XmlGenerator.setAdvancetime(advancetime); } @Bean public void initOpenstatus() { StatusConst.setOpenstatus(openstatus); } } ``` 在上述代码中,通过 `@Value` 注解读取配置文件的值,然后在 `@Bean` 方法赋值静态变量 [^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值