在之前写的连接influxdb的操作中,是用autowired自动装配service类,在service类中用@value来获取配置xml文件中连接influxdb所需要的参数。
用这种方法尴尬的是,@value的执行是在构造函数之后,所以无法在service类中初始化一个连接所需要的client。而是每次请求时都判断以下是否有client,没有的话进行创建。
然后了解到一种更好的写法来进行替换。那就是写
一个client的配置类,里面同样用@value获取配置值。不同的是用@bean来声明一个返回值为influxdbclient的函数。这样就可以在service里直接用@autowired来自动装配一个client来使用。
@Configuration
public class FlowClient {
@Value("${spring.influx.user}")
private String userName;
@Value("${spring.influx.password}")
private String password;
@Value("${spring.influx.url}")
private String url;
//数据库
@Value("${spring.influx.database}")
private String database;
@Value("${spring.influx.token}")
private String token;
@Value("${spring.influx.org}")
private String org;
@Bean
public InfluxDBClient influxDBClient() {
return InfluxDBClientFactory.create(url, token.toCharArray());
}
}
@Autowired
private InfluxDBClient client;