Spring Boot 中使用 Hikari连接各类数据源

本文详细介绍了如何在SpringBoot应用中使用Hikari连接池来连接Hive、PostgreSQL、Presto和MySQL四种不同类型的数据源。配置了HikariConfig的相关属性,并提供了相应的依赖版本信息,包括排除某些不必要的依赖。对于每个数据库的连接,展示了如何获取连接实例。
摘要由CSDN通过智能技术生成

Spring Boot 中使用 Hikari连接各类数据源


1,连接hive集群

HikariConfig中各属性设置
{
    "allowPoolSuspension": false,
    "autoCommit": true,
    "connectionTimeout": 10000,
    "driverClassName": "org.apache.hive.jdbc.HiveDriver",
    "idleTimeout": 30000,
    "initializationFailTimeout": 30000,
    "jdbcUrl": "jdbc:hive2://IP:port,IP:port,IP:port/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2",
    "leakDetectionThreshold": 0,
    "maxLifetime": 1800000,
    "maximumPoolSize": 15,
    "minimumIdle": 5,
    "password": "XXXXXX",
    "username": "XXXXX",
    "validationTimeout": 30000
}
获取连接
Connection=new HikariDataSource(hikariConfig).getConnection();
所需依赖(注意各依赖之间版本)
<!-- hive begin  -->
        <dependency>
            <groupId>org.apache.hive</groupId>
            <artifactId>hive-jdbc</artifactId>
            <version>2.0.0</version>
            <exclusions>
                <exclusion>
                    <groupId>com.sun.jersey</groupId>
                    <artifactId>jersey-client</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.sun.jersey</groupId>
                    <artifactId>jersey-core</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.sun.jersey.contribs</groupId>
                    <artifactId>jersey-apache-client4</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.eclipse.jetty.aggregate</groupId>
                    <artifactId>jetty-all</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.11</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>4.0.1</version>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.zookeeper</groupId>
                    <artifactId>zookeeper</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>4.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-client</artifactId>
            <version>4.0.1</version>
        </dependency>
<!-- hive end  -->
<!-- springboot 版本  -->
<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.9</version>
</parent>

2,连接postgresql

HikariConfig中各属性设置
{

    "connectionTimeout": 10000,
    "driverClassName": "org.postgresql.Driver",
    "idleTimeout": 30000,
    "initializationFailTimeout": 30000,
    "isolateInternalQueries": false,
    "jdbcUrl": "jdbc:postgresql://192.168.112.50:5433/dh",
    "leakDetectionThreshold": 0,
    "maxLifetime": 1800000,
    "maximumPoolSize": 15,
    "minimumIdle": 5,
    "password": "XXXXX",
    "poolName": "jdbc-hikari",
    "username": "XXXX",
    "validationTimeout": 30000
}
获取连接
Connection=new HikariDataSource(hikariConfig).getConnection();
所需依赖
<dependency>
       <groupId>org.postgresql</groupId>
       <artifactId>postgresql</artifactId>
       <version>42.1.1</version>
</dependency>
<!-- springboot 版本  -->
<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.9</version>
</parent>

3,连接presto

HikariConfig中各属性设置
{

    "driverClassName": "io.prestosql.jdbc.PrestoDriver",
    "idleTimeout": 30000,
    "initializationFailTimeout": 30000,
    "jdbcUrl": "jdbc:presto://IP:port?SSL=true&SSLKeyStorePath=F:/key/presto.keystore&SSLKeyStorePassword=XXX",
    "leakDetectionThreshold": 0,
    "maxLifetime": 1800000,
    "maximumPoolSize": 15,
    "minimumIdle": 5,
    "password": "YYYYY",
    "readOnly": false,
    "registerMbeans": false,
    "username": "XXXX",
    "validationTimeout": 30000
}
获取连接
Connection=new HikariDataSource(hikariConfig).getConnection();
所需依赖
<dependency>
            <groupId>io.prestosql</groupId>
            <artifactId>presto-jdbc</artifactId>
            <version>338</version>
</dependency>
<!-- springboot 版本  -->
<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.9</version>
</parent>

4,连接MySQL

HikariConfig中各属性设置
{
    "connectionTimeout": 10000,
    "driverClassName": "com.mysql.cj.jdbc.Driver",
    "idleTimeout": 30000,
    "initializationFailTimeout": 30000,
    "isolateInternalQueries": false,
    "jdbcUrl": "jdbc:mysql://192.168.112.50:3306/dhtest?useSSL=false",
    "leakDetectionThreshold": 0,
    "maxLifetime": 1800000,
    "maximumPoolSize": 15,
    "minimumIdle": 5,
    "password": "XXXXXX",
    "username": "XXXXX",
    "validationTimeout": 30000
}
获取连接
Connection=new HikariDataSource(hikariConfig).getConnection();
所需依赖
<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- springboot 版本  -->
<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.9</version>
</parent>
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot支持使用多个数据源,可以通过配置多个数据源,以及配置动态数据源来实现连接N个数据库。 首先,需要在项目引入多数据源的依赖,例如Druid或HikariCP。 然后,在配置文件配置多个数据源的信息,如下所示: ``` spring.datasource.primary.url=jdbc:mysql://localhost:3306/db1 spring.datasource.primary.username=root spring.datasource.primary.password=root spring.datasource.secondary.url=jdbc:mysql://localhost:3306/db2 spring.datasource.secondary.username=root spring.datasource.secondary.password=root ``` 在配置文件还需要配置动态数据源,如下所示: ``` spring.datasource.type=com.zaxxer.hikari.HikariDataSource spring.datasource.druid.initial-size=5 spring.datasource.druid.min-idle=5 spring.datasource.druid.max-active=20 spring.datasource.druid.test-on-borrow=true spring.datasource.dynamic.primary=primary spring.datasource.dynamic.secondary=secondary spring.datasource.dynamic.datasource-names=primary,secondary ``` 这样就可以实现动态数据源的配置。在代码,可以使用`@Primary`和`@Qualifier`注解来指定默认数据源和特定的数据源。 例如: ``` @Primary @Bean(name = "primaryDataSource") @ConfigurationProperties(prefix = "spring.datasource.primary") public DataSource primaryDataSource() { return DataSourceBuilder.create().type(HikariDataSource.class).build(); } @Bean(name = "secondaryDataSource") @ConfigurationProperties(prefix = "spring.datasource.secondary") public DataSource secondaryDataSource() { return DataSourceBuilder.create().type(HikariDataSource.class).build(); } @Bean(name = "dynamicDataSource") public DataSource dynamicDataSource(@Qualifier("primaryDataSource") DataSource primaryDataSource, @Qualifier("secondaryDataSource") DataSource secondaryDataSource) { DynamicDataSource dynamicDataSource = new DynamicDataSource(); Map<Object, Object> dataSourceMap = new HashMap<>(); dataSourceMap.put("primary", primaryDataSource); dataSourceMap.put("secondary", secondaryDataSource); dynamicDataSource.setTargetDataSources(dataSourceMap); dynamicDataSource.setDefaultTargetDataSource(primaryDataSource); return dynamicDataSource; } ``` 在使用时,可以通过`@Autowired`注解注入动态数据源,并使用`@Qualifier`注解指定特定的数据源,例如: ``` @Autowired @Qualifier("dynamicDataSource") private DataSource dataSource; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值