diff --git a/src/main/java/ru/nbch/credit_tracker/config/datasource/ScoringDataSourceConfig.java b/src/main/java/ru/nbch/credit_tracker/config/datasource/ScoringDataSourceConfig.java new file mode 100644 index 0000000..1e4b0f6 --- /dev/null +++ b/src/main/java/ru/nbch/credit_tracker/config/datasource/ScoringDataSourceConfig.java @@ -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 dataSourceBuilder = (DataSourceBuilder) 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(); + } +} diff --git a/src/main/java/ru/nbch/credit_tracker/config/settings/CreditTrackerSettings.java b/src/main/java/ru/nbch/credit_tracker/config/settings/CreditTrackerSettings.java index 42f8815..71c1a1b 100644 --- a/src/main/java/ru/nbch/credit_tracker/config/settings/CreditTrackerSettings.java +++ b/src/main/java/ru/nbch/credit_tracker/config/settings/CreditTrackerSettings.java @@ -15,4 +15,6 @@ public class CreditTrackerSettings { private DataSourceSettings indicDataSourceSettings; @NestedConfigurationProperty private DataSourceSettings signalDataSourceSettings; + @NestedConfigurationProperty + private DataSourceSettings scoringDataSourceSettings; } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 0d627c2..978350c 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -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= \ No newline at end of file +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 \ No newline at end of file