java相关:spring boot静态变量注入配置文件详解
发布于 2020-7-21|
复制链接
摘记: 本文实例为大家分享了spring boot静态变量注入配置文件的具体代码,供大家参考,具体内容如下
spring 静态变量注入spring 中不支持直接进行静态变量值的注入,我们看一下代码:
```java
@Component(value = "KafkaConfig") ..
本文实例为大家分享了spring boot静态变量注入配置文件的具体代码,供大家参考,具体内容如下spring 静态变量注入spring 中不支持直接进行静态变量值的注入,我们看一下代码:
```java
@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;
}
}
```
配置文件如下:
```java
baseConfig:
logBrokerList: 10.10.2.154:9092
logTopic: test
monitorTopic: monitor
```
项目启动时使用 logBrokerList变量
```java
@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方法注入静态变量 ,我们可以改成这样就静态变量可以获取到你配置的信息了:
```java
@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