1. 程式人生 > 其它 >SpringBoot多資料來源使用impala連線

SpringBoot多資料來源使用impala連線

SpringBoot 2.0 + Impala 多資料來源 JDBCTemplate SpringBoot 2.0 + Impala 多資料來源 Named

SpringBoot 配置多資料來源(Hikari連線池)連線Impala
註釋:

Impala:

SpringBoot使用預設的Hikari連線池,連線Impala
增加依賴
<!--資料庫連線池-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>

<!-- Impala start -->
<!-- 有可能下載不到該Jar, 可以到該地址下載相應版本:https://www.cloudera.com/downloads/connectors/impala/jdbc/2-6-3.html -->
<!-- https://mvnrepository.com/artifact/com.cloudera/ImpalaJDBC41 -->
<dependency>
<groupId>com.cloudera</groupId>
<artifactId>ImpalaJDBC41</artifactId>
<version>${impala.version}</version>
</dependency>
<!-- Impala end -->
配置application.yml檔案
該配置檔案為多環境配置,可以參考 SpringBoot多環境配置
server:
port: 7001
spring:
profiles:
active: dev
servlet:
multipart:
enabled: true
mvc:
view:
prefix: /
suffix: .html
favicon:
enabled: false
logback:
name: template

---
# developer enviroment
spring:
profiles: dev
datasource:
impala:
driver-class-name: com.cloudera.impala.jdbc41.Driver
jdbc-url: jdbc:impala://xx:21050/default
oracle:
first:
driver-class-name: oracle.jdbc.OracleDriver
jdbc-url: jdbc:oracle:thin:@//xx:1521/db
username: xx
password: xx
---
# developer enviroment
spring:
profiles: test
datasource:
impala:
driver-class-name: com.cloudera.impala.jdbc41.Driver
jdbc-url: jdbc:impala://xx:21050/default
oracle:
first:
driver-class-name: oracle.jdbc.OracleDriver
jdbc-url: jdbc:oracle:thin:@//xx:1521/db
username: xx
password: xx
---
# developer enviroment
spring:
profiles: prod
datasource:
impala:
driver-class-name: com.cloudera.impala.jdbc41.Driver
jdbc-url: jdbc:impala://xx:21050/default
oracle:
first:
driver-class-name: oracle.jdbc.OracleDriver
jdbc-url: jdbc:oracle:thin:@//xx:1521/db
username: xx
password: xx
多資料來源連線配置類
專案目錄結構
src
├───main
│ ├───java
│ │ └───com
│ │ └───template
│ │ ├───common # 公共部分
│ │ ├───config # 配置、資料來源
│ │ ├───domain # DO、DTO、VO
│ │ ├───repository # 資料庫訪問層
│ │ ├───service # 邏輯層
│ │ │ └───impl # 邏輯具體實現
│ │ ├───util # 工具類
│ │ └───web # api 介面
│ └───resources
│ ├───static # 靜態資原始檔
│ │ └───js # 頁面依賴的javascript 檔案
│ └───templates # 頁面模板檔案
└───test
└───java
└───com
└───template
├───config
└───repository
多資料來源配置類
package com.template.config;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;

import com.zaxxer.hikari.HikariDataSource;

@Configuration
public class HikariDataSourceConfig {

@Primary
@Bean(name = "impalaDataSource")
@Qualifier(value = "impalaDataSource")
@ConfigurationProperties(prefix = "spring.datasource.impala")
public DataSource primaryDataSource() {
return DataSourceBuilder.create().type(HikariDataSource.class).build();
}

@Bean(name = "jdbcTemplateImpala")
public JdbcTemplate jdbcTemplateImpala(@Qualifier("impalaDataSource") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}

@Bean(name = "namedJdbcTemplateImpala")
public NamedParameterJdbcTemplate namedJdbcTemplateImpala(
@Qualifier("impalaDataSource") DataSource dataSource) {
return new NamedParameterJdbcTemplate(dataSource);
}

@Bean(name = "secondOracleDataSource")
@Qualifier(value = "secondOracleDataSource")
@ConfigurationProperties(prefix = "spring.datasource.oracle.first")
public DataSource firstOracleDataSource() {
return DataSourceBuilder.create().type(HikariDataSource.class).build();
}

@Bean(name = "jdbcTemplateOracle1")
public JdbcTemplate jdbcTemplateOracle1(
@Qualifier("secondOracleDataSource") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}

}
測試類
package com.template.config;


import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.test.context.junit4.SpringRunner;

import lombok.extern.slf4j.Slf4j;

@Slf4j
@SpringBootTest
@RunWith(SpringRunner.class)
public class HikariDataSourceConfigTest {

@Autowired
private JdbcTemplate jdbcTemplateImpala;

@Test
public void testImpalaJdbcTemplate() {
log.info("impala jdbctemplate connection start:");
String sql = "select count(*) from table";
Integer count = jdbcTemplateImpala.queryForObject(sql, Integer.class);
log.info("impalaJdbcTemplate query result :\t" + count);

}

}
————————————————
版權宣告:本文為CSDN博主「焦慮的肉鬆麵包」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。
原文連結:https://blog.csdn.net/weixin_44131142/article/details/103696481