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

来源:互联网 发布:大内义兴数据 编辑:程序博客网 时间:2024/05/29 13:25

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变量

@SpringBootApplicationpublic 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