InfluxDBConfiguration 클래스는 InfluxDB를 사용하기 위해 application.yml에 작성해 둔 influxdb 설정으로 다양한 Bean들을 등록한다. 이때 사용하게 되는 클래스가 InfluxDBProperties인데 이 클래스는 기본적으로 yml파일의 spring.influxdb를 prefix로 둔 설정정보를 읽도록 돼있다. 즉 influxdb를 멀티로 설정하기 위해서는 해당 클래스의 prefix와 이를 사용하여 Bean을 등록하는 클래스를 수정하면 된다.
먼저 yaml파일의 prefix를 수정하고 이를 읽어 기본 정보를 설정하는 InfluxDBProperties 클래스를 재정의 한다. 방법은 쉬운데 InfluxDBProperties를 상속받아 자신이 원하는 이름의 클래스를 하나 더 만들어 등록하는 것이다. 본문 내용은 특별히 설정할 것이 없으므로 클래스만 정의하도록 한다.
InfluxDBConfiguration
InfluxDBProperties를 설정하였으니 이제 이를 사용하여 Bean을 등록하는 InfluxDBConfiguration을 정의하면 된다.
@Bean(name = "influxDBTemplateMulti") public InfluxDBTemplate<Point> influxDBTemplate(@Qualifier("connectionFactoryMulti")final InfluxDBConnectionFactory connectionFactory) { /* * You can use your own 'PointCollectionConverter' implementation, e.g. in case * you want to use your own custom measurement object. */ returnnew InfluxDBTemplate<>(connectionFactory, new PointConverter()); }
@Bean(name = "defaultTemplateMulti") public DefaultInfluxDBTemplate defaultTemplate(@Qualifier("connectionFactoryMulti")final InfluxDBConnectionFactory connectionFactory) { /* * If you are just dealing with Point objects from 'influxdb-java' you could * also use an instance of class DefaultInfluxDBTemplate. */ returnnew DefaultInfluxDBTemplate(connectionFactory); } }
처음에 소개했던 InfluxDBConfiguration과 거의 흡사하다. 다른점이라고는 @EnableConfigurationProperties에 위에서 작성한 InfluxDBProeprtiesMulti클래스를 설정하고 Bean으로 등록하는 이름을 원하는 이름으로 지정하며 이를 주입받는 클래스에 @Qualifier로 Bean을 지정해주면 된다.
사용법
사용법도 기존과 동일하다. yaml파일에 작성한 설정정보를 자동으로 읽어 지정한 이름으로 Bean을 등록하였으므로 InfluxDBTemplate에 주입받는 Bean의 이름만 @Qualifier로 지정해주면 끝이다.