Set up Scoring DataSource

This commit is contained in:
Mikhail Trofimov 2025-06-02 16:54:03 +03:00
parent 8a9c9a4c89
commit efe7ad38ab
3 changed files with 65 additions and 2 deletions

View file

@ -0,0 +1,55 @@
package ru.nbch.credit_tracker.config.datasource;
import com.zaxxer.hikari.HikariDataSource;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
@Slf4j
@Configuration
@MapperScan(
basePackages = "ru.nbch.credit_tracker.mapper.scoring",
sqlSessionFactoryRef = "sqlSessionScoring"
)
public class ScoringDataSourceConfig {
@Value("classpath:mybatis/mapper/scoring/*.xml")
private Resource[] resources;
@Bean(name = "scoringDataSource")
public DataSource dataSource(CreditTrackerSettings config) throws SQLException {
DataSourceBuilder<HikariDataSource> dataSourceBuilder = (DataSourceBuilder<HikariDataSource>) DataSourceBuilder.create();
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()) {
connection.isValid(3);
} catch (SQLException e) {
log.error("Unable to connect to Scoring url={}", config.getIndicDataSourceSettings().url(), e);
throw e;
}
log.info("Connected to Scoring: url={}", config.getIndicDataSourceSettings().url());
return dataSource;
}
@Bean(name = "sqlSessionScoring")
public SqlSessionFactory sqlSessionFactory(@Qualifier("scoringDataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource);
sqlSessionFactoryBean.setMapperLocations(resources);
return sqlSessionFactoryBean.getObject();
}
}

View file

@ -15,4 +15,6 @@ public class CreditTrackerSettings {
private DataSourceSettings indicDataSourceSettings;
@NestedConfigurationProperty
private DataSourceSettings signalDataSourceSettings;
@NestedConfigurationProperty
private DataSourceSettings scoringDataSourceSettings;
}

View file

@ -3,7 +3,7 @@ spring.application.name=credit_tracker
# datasources
# indic
ct.indic-data-source-settings.driver=com.ibm.db2.jcc.DB2Driver
ct.indic-data-source-settings.url=jdbc:db2://10.230.227.100:2668/cprosd22:currentSchema=INDIC;
ct.indic-data-source-settings.url=jdbc:db2://10.230.227.101:2668/cprosd22:currentSchema=INDIC;
ct.indic-data-source-settings.username=ros9appl
ct.indic-data-source-settings.password=R0s9Appl
@ -11,4 +11,10 @@ ct.indic-data-source-settings.password=R0s9Appl
ct.signal-data-source-settings.driver=org.postgresql.Driver
ct.signal-data-source-settings.url=jdbc:postgresql://10.200.200.133:5432/credit_tracker
ct.signal-data-source-settings.username=credit_tracker_user
ct.signal-data-source-settings.password=
ct.signal-data-source-settings.password=
# scoring
ct.scoring-data-source-settings.driver=com.ibm.db2.jcc.DB2Driver
ct.scoring-data-source-settings.url=jdbc:db2://10.230.227.101:2668/cprosd22:currentSchema=TEST_2_INDIC;
ct.scoring-data-source-settings.username=tester
ct.scoring-data-source-settings.password=tester