• spring boot 静态变量注入配置文件


     

    spring 静态变量注入

    spring 中不支持直接进行静态变量值的注入,我们看一下代码:

    @Component(value = "KafkaConfig")
    @ConfigurationProperties(prefix = "baseConfig")
    public class KafkaConfig {
    private static String logBrokerList;
    
     public static String getLogBrokerList() {
        return logBrokerList;
     }
    
     public static void setLogBrokerList(String logBrokerList) {
        KafkaConfig.logBrokerList = logBrokerList;
     }
    }

    配置文件如下:

    baseConfig:
      logBrokerList: 10.10.2.154:9092
      logTopic: test  
      monitorTopic: monitor  

    项目启动时使用 logBrokerList变量

    @SpringBootApplication
    public class Application {
    public  static void main(String[] args) throws Exception {
    SpringApplication.run(Application.class, args);
    System.out.println("config static test :" + KafkaConfig.getLogBrokerList());
    }
    }

    执行结果:config static test :null


    解决办法

    利用spring的set注入方法,通过非静态的setter方法注入静态变量 
    ,我们可以改成这样就静态变量可以获取到你配置的信息了:

    @Component(value = "KafkaConfig")
    @ConfigurationProperties(prefix = "baseConfig")
    public class KafkaConfig {
    private static String logBrokerList;
    
    public static String getLogBrokerList() {
    return logBrokerList;
    }
    @Value("${baseConfig.logBrokerList}")
    public  void setLogBrokerList(String logBrokerList) {
    KafkaConfig.logBrokerList = logBrokerList;
    }
    }

    执行结果:config static test :10.10.2.154:9092

  • 相关阅读:
    JavaScript基础
    w3c网站案例
    CSS基础
    HTML基础
    MySQL--用户管理 pymysql 索引
    MySQL--高级
    MySQL--多表查询
    MySQL--单表查询
    直接插入排序与折半插入排序分析
    Nginx从安装到简单使用
  • 原文地址:https://www.cnblogs.com/pejsidney/p/9282506.html
Copyright © 2020-2023  润新知