Refactored datasource configs

This commit is contained in:
Mikhail Trofimov 2025-07-24 10:19:10 +03:00
parent f9f026d815
commit c77e22e641
4 changed files with 26 additions and 27 deletions

View file

@ -0,0 +1,19 @@
package ru.nbch.credit_tracker.config.datasource;
import org.springframework.boot.jdbc.DataSourceBuilder;
import ru.nbch.credit_tracker.config.settings.DataSourceSettings;
import javax.sql.DataSource;
public class DatabaseConfig {
protected DataSource createDataSource(DataSourceSettings settings) {
return DataSourceBuilder.create()
.driverClassName(settings.driver())
.url(settings.url())
.username(settings.username())
.password(settings.password())
.build();
}
}

View file

@ -1,13 +1,11 @@
package ru.nbch.credit_tracker.config.datasource; package ru.nbch.credit_tracker.config.datasource;
import com.zaxxer.hikari.HikariDataSource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan; import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource; import org.springframework.core.io.Resource;
@ -23,19 +21,14 @@ import java.sql.SQLException;
basePackages = "ru.nbch.credit_tracker.mapper.indic", basePackages = "ru.nbch.credit_tracker.mapper.indic",
sqlSessionFactoryRef = "sqlSessionIndic" sqlSessionFactoryRef = "sqlSessionIndic"
) )
public class IndicDataSourceConfig { public class IndicDataSourceConfig extends DatabaseConfig {
@Value("classpath:mybatis/mapper/indic/*.xml") @Value("classpath:mybatis/mapper/indic/*.xml")
private Resource[] resources; private Resource[] resources;
@Bean(name = "indicDataSource") @Bean(name = "indicDataSource")
public DataSource dataSource(CreditTrackerSettings config) throws SQLException { public DataSource dataSource(CreditTrackerSettings config) throws SQLException {
DataSourceBuilder<HikariDataSource> dataSourceBuilder = (DataSourceBuilder<HikariDataSource>) DataSourceBuilder.create(); DataSource dataSource = createDataSource(config.getIndicDataSourceSettings());
dataSourceBuilder.driverClassName(config.getIndicDataSourceSettings().driver());
dataSourceBuilder.url(config.getIndicDataSourceSettings().url());
dataSourceBuilder.username(config.getIndicDataSourceSettings().username());
dataSourceBuilder.password(config.getIndicDataSourceSettings().password());
HikariDataSource dataSource = dataSourceBuilder.build();
try (Connection connection = dataSource.getConnection()) { try (Connection connection = dataSource.getConnection()) {
connection.isValid(3); connection.isValid(3);
} catch (SQLException e) { } catch (SQLException e) {

View file

@ -1,13 +1,11 @@
package ru.nbch.credit_tracker.config.datasource; package ru.nbch.credit_tracker.config.datasource;
import com.zaxxer.hikari.HikariDataSource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan; import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource; import org.springframework.core.io.Resource;
@ -16,25 +14,21 @@ import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings;
import javax.sql.DataSource; import javax.sql.DataSource;
import java.sql.Connection; import java.sql.Connection;
import java.sql.SQLException; import java.sql.SQLException;
@Slf4j @Slf4j
@Configuration @Configuration
@MapperScan( @MapperScan(
basePackages = "ru.nbch.credit_tracker.mapper.scoring", basePackages = "ru.nbch.credit_tracker.mapper.scoring",
sqlSessionFactoryRef = "sqlSessionScoring" sqlSessionFactoryRef = "sqlSessionScoring"
) )
public class ScoringDataSourceConfig { public class ScoringDataSourceConfig extends DatabaseConfig {
@Value("classpath:mybatis/mapper/scoring/*.xml") @Value("classpath:mybatis/mapper/scoring/*.xml")
private Resource[] resources; private Resource[] resources;
@Bean(name = "scoringDataSource") @Bean(name = "scoringDataSource")
public DataSource dataSource(CreditTrackerSettings config) throws SQLException { public DataSource dataSource(CreditTrackerSettings config) throws SQLException {
DataSourceBuilder<HikariDataSource> dataSourceBuilder = (DataSourceBuilder<HikariDataSource>) DataSourceBuilder.create(); DataSource dataSource = createDataSource(config.getScoringDataSourceSettings());
dataSourceBuilder.driverClassName(config.getScoringDataSourceSettings().driver());
dataSourceBuilder.url(config.getScoringDataSourceSettings().url());
dataSourceBuilder.username(config.getScoringDataSourceSettings().username());
dataSourceBuilder.password(config.getScoringDataSourceSettings().password());
HikariDataSource dataSource = dataSourceBuilder.build();
try (Connection connection = dataSource.getConnection()) { try (Connection connection = dataSource.getConnection()) {
connection.isValid(3); connection.isValid(3);
} catch (SQLException e) { } catch (SQLException e) {

View file

@ -1,13 +1,11 @@
package ru.nbch.credit_tracker.config.datasource; package ru.nbch.credit_tracker.config.datasource;
import com.zaxxer.hikari.HikariDataSource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan; import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource; import org.springframework.core.io.Resource;
@ -23,18 +21,13 @@ import java.sql.SQLException;
basePackages = "ru.nbch.credit_tracker.mapper.signal", basePackages = "ru.nbch.credit_tracker.mapper.signal",
sqlSessionFactoryRef = "sqlSessionSignal" sqlSessionFactoryRef = "sqlSessionSignal"
) )
public class SignalDataSourceConfig { public class SignalDataSourceConfig extends DatabaseConfig {
@Value("classpath:mybatis/mapper/signal/*.xml") @Value("classpath:mybatis/mapper/signal/*.xml")
private Resource[] resources; private Resource[] resources;
@Bean(name = "signalDataSource") @Bean(name = "signalDataSource")
public DataSource dataSource(CreditTrackerSettings config) throws SQLException { public DataSource dataSource(CreditTrackerSettings config) throws SQLException {
DataSourceBuilder<HikariDataSource> dataSourceBuilder = (DataSourceBuilder<HikariDataSource>) DataSourceBuilder.create(); DataSource dataSource = createDataSource(config.getSignalDataSourceSettings());
dataSourceBuilder.driverClassName(config.getSignalDataSourceSettings().driver());
dataSourceBuilder.url(config.getSignalDataSourceSettings().url());
dataSourceBuilder.username(config.getSignalDataSourceSettings().username());
// dataSourceBuilder.password(config.getSignalDataSourceSettings().password()); TODO uncomment whe password will be set
HikariDataSource dataSource = dataSourceBuilder.build();
try (Connection connection = dataSource.getConnection()) { try (Connection connection = dataSource.getConnection()) {
connection.isValid(3); connection.isValid(3);
} catch (SQLException e) { } catch (SQLException e) {