当前位置: 首页 > 知识库问答 >
问题:

使用HikariDataSource的Springboot

尉迟哲瀚
2023-03-14

我尝试将Spring Boot与HikariDataSource配合使用,但出现了错误。断管怎么配置比较好还是用c3p0比较好?我正在使用这个配置

spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.maxLifetime=200000
spring.datasource.idleTimeout=200000
spring.jpa.database=POSTGRESQL
spring.datasource.maximumPoolSize=5
spring.datasource.maxActive=5
spring.datasource.platform=postgres
spring.jpa.show-sql=false
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
spring.datasource.driver-class-name=org.postgresql.Driver
#spring.datasource.url=jdbc:postgresql://localhost:5432/db_dnaso
spring.datasource.url=jdbc:postgresql://172.16.1.10:5432/db_dnaso
#spring.datasource.url=jdbc:postgresql://ci.lumera.com.br:5432/db_dnaso
spring.datasource.username=postgres
spring.datasource.password=dna44100

我使用:

<dependency>
            <groupId>com.zaxxer</groupId>
            <artifactId>HikariCP</artifactId>
            <version>2.5.1</version>
        </dependency>

和 springboot 版本 1.4.2.RELEASE

共有2个答案

龙弘盛
2023-03-14

尝试使用此配置来定义数据源

 @Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
        entityManagerFactoryRef = "eaEntityManagerFactory",
        transactionManagerRef = "eaTransactionManager",
        basePackages = {"com.core.persistance.xx" 
            
                 })
public class EaDbConfig {

    @Bean(name = "eaDataSourceProperties")
    @ConfigurationProperties("spring.datasource-ea")
    public DataSourceProperties eaDataSourceProperties() {
        return new DataSourceProperties();
    }

    @Bean(name = "eaDataSource")
    @ConfigurationProperties("spring.datasource-ea.configuration")
    public DataSource eaDataSource(@Qualifier("eaDataSourceProperties") DataSourceProperties eaDataSourceProperties) {
        return eaDataSourceProperties.initializeDataSourceBuilder().type(HikariDataSource.class).build();
    }

    @Bean(name = "eaEntityManagerFactory")
    public LocalContainerEntityManagerFactoryBean eaEntityManagerFactory(
            EntityManagerFactoryBuilder eaEntityManagerFactoryBuilder, @Qualifier("eaDataSource") DataSource eaDataSource) {

        Map<String, String> eaJpaProperties = new HashMap<>();
    /*    eaJpaProperties.put("hibernate.dialect", "org.hibernate.dialect.H2Dialect");
        eaJpaProperties.put("hibernate.hbm2ddl.auto", "create-drop");*/

        return eaEntityManagerFactoryBuilder
                .dataSource(eaDataSource)
                .packages("com.core.persistance.xx.domain"
                         
                         )
                .persistenceUnit("eaDataSource")
                .properties(eaJpaProperties)
                .build();
    }

    @Bean(name = "eaTransactionManager")
    public PlatformTransactionManager eaTransactionManager(
            @Qualifier("eaEntityManagerFactory") EntityManagerFactory eaEntityManagerFactory) {

        return new JpaTransactionManager(eaEntityManagerFactory);
    }
}

---------------
config properties :
#  source configuration

 - spring.datasource-ea.url=url
 - spring.datasource-ea.username=username
 - spring.datasource-ea.password=password
 - spring.datasource-ea.driverClassName=oracle.jdbc.OracleDriver

颜阳炎
2023-03-14

尝试将@bean添加到配置类中。

@Bean(name = "hikariDataSource")
@Qualifier("hikariDataSource")
@ConfigurationProperties(prefix = "spring.datasource.hikari")
public DataSource hikariDataSource() {
    log.info("Building hikariDataSource......");
    return DataSourceBuilder.create().type(com.zaxxer.hikari.HikariDataSource.class).build();
}

以及配置属性文件。

spring.datasource.hikari.jdbc-url=jdbc:mysql://127.0.0.1:3306/test
spring.datasource.hikari.username=root
spring.datasource.hikari.password=root
spring.datasource.hikari.driver-class-name=com.mysql.jdbc.Driver
 类似资料:
  • 我将在我的WEB应用程序中使用HikariCP而不是c3p0。看起来,太棒了。但对我来说,HikariCP界面中仍然存在一个值得怀疑的地方。它包含两个类—HikariPool和HikariDataSource,它们包含几乎相似的功能。通过查看源代码,我发现HikariDataSource就像HikariPool的包装器。例如,请在下面找到代码中有趣的部分: 这两个类工作完美。那么,问题是这样的:最

  • 我已经实现了HikariCP,它工作得很好,我现在计划优雅地关闭我的应用程序,我想让HikariCP正确地关闭数据库连接,而不仅仅是关闭java应用程序。我在谷歌上阅读,我可以看到HikariDataSource应该有一个封闭的方法。。。。但事实上,我看不到它的可用性: 在Eclipse中,如果我尝试ds。close()。。。Eclipse没有显示“close”作为HikariDataSource

  • 这是释放回池的连接的正确方法吗 只是想确保这是正确的,因为如果我不调用连接,我的连接不会被重新循环

  • 以下是(Java8 Oauth2 MySql Hazelcast无集群http会话)组合的prod模式中的错误。开发模式运行良好。 在日志中,数据源(hazelcast)创建的第一部分显示[dev]模式。我不确定这是故意的。 请帮助我解决这个问题。 新鲜的观察。早些时候,我有两个jhipster网络应用程序在同一个tomcat上运行。删除另一个已经消除了错误。我能知道原因吗?在生产中,两个jhip

  • 我在我的应用程序中创建了第二个DataSource。 我用HikariDataSource创建了它,因为它断开了连接,所以出现了问题。 现在它没有断开,但是很慢 我的配置如下: 爪哇: 有人能告诉我如何提高绩效吗。 它们是表的小查询,分页约为25条记录,需要4秒钟。 我观察到,查询一个select的200条记录需要46秒,而查询只需要2秒。 以前,它们是千分之一秒。 非常感谢。

  • 我正在试图弄清楚目前有多少连接被打开,但我似乎找不到一个明显的方法来使用Hikari实现这一点。 公开了这些信息(),但我没有看到从访问这些信息的简单方法。