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

如何用Spring为Hikaricp建立数据源?

关学
2023-03-14

嗨,我正在尝试使用HikariCP与Spring连接池。我正在使用jdbcTempLate和JdbcDaoSupport。
这是数据源的spring配置文件:

<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource">
    <property name="dataSourceClassName" value="oracle.jdbc.driver.OracleDriver"/>
    <property name="dataSource.url" value="jdbc:oracle:thin:@localhost:1521:XE"/>
    <property name="dataSource.user" value="username"/>
    <property name="dataSource.password" value="password"/>
</bean>
Cannot resolve reference to bean 'dataSource' while setting bean property 'dataSource'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in ServletContext resource [/WEB-INF/dispatcher-servlet.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.zaxxer.hikari.HikariDataSource]: No default constructor found; nested exception is java.lang.NoSuchMethodException: com.zaxxer.hikari.HikariDataSource.<init>()

共有1个答案

韩智明
2023-03-14

您需要在bean配置上编写这个结构(这是您的数据源):

<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
    <property name="poolName" value="springHikariCP" />
    <property name="connectionTestQuery" value="SELECT 1" />
    <property name="dataSourceClassName" value="${hibernate.dataSourceClassName}" />
    <property name="maximumPoolSize" value="${hibernate.hikari.maximumPoolSize}" />
    <property name="idleTimeout" value="${hibernate.hikari.idleTimeout}" />

    <property name="dataSourceProperties">
        <props>
            <prop key="url">${dataSource.url}</prop>
            <prop key="user">${dataSource.username}</prop>
            <prop key="password">${dataSource.password}</prop>
        </props>
    </property>
</bean>

<!-- HikariCP configuration -->
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
    <constructor-arg ref="hikariConfig" />
</bean>

这是我的例子,它正在起作用。您只需要将您的属性放在hibernate.properties上,然后在:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <list>
            <value>classpath:hibernate.properties</value>
        </list>
    </property>
</bean>

OBS:版本为
log4j:1.2.16
SpringFramework:3.1.4。发行版
Hikaricp:1.4.0

属性文件(hibernate.Properties):

hibernate.dataSourceClassName=oracle.jdbc.pool.OracleDataSource
hibernate.hikari.maximumPoolSize=10
hibernate.hikari.idleTimeout=30000
dataSource.url=jdbc:oracle:thin:@localhost:1521:xe
dataSource.username=admin
dataSource.password=
 类似资料:
  • 问题内容: 我正在尝试将HikariCP与Spring一起用于连接池。我正在使用jdbcTempLate和JdbcdaoSupport。 这是我用于数据源的spring配置文件: 但不幸的是,正在生成以下错误消息: 谁能告诉我如何解决这个问题? 问题答案: 你需要在bean配置上编写此结构(这是你的数据源): 这是我的示例,正​​在运行。你只需要将属性放在hibernate.properties上

  • 情景是这样,我的项目,一两个、几个数据操作速度还是可以的。但操作一多起来,速度就变得超慢的。我严重怀疑是我用错了,想请问大佬们都是怎么使用的?

  • 我将MySQL数据源设置为主bean: 并将以下配置放入应用程序.属性中: 令人遗憾的是,这些HikariCP配置没有被读取:

  • 在其他错误中,我发现了以下错误: 错误[org.jboss.as.Controller.management-Operation](控制器引导线程)JBAS014613:操作(“add”)失败-地址:([(“subsystem”=>“datasources”),(“data-source”=>“mydatasource”)])-失败描述:{“JBAS014771:Services with mis

  • 我这样创建了自己的存储库: 那么问题是如何自动为此创建cassandra表呢?目前Spring注入,它试图将实体插入到不存在的表中。 那么,有没有办法在Spring容器启动期间创建卡桑德拉表(如果它们不存在)? P.S.如果只有config boolean属性,而没有添加xml行和创建类似BeanFactory等的东西,那将非常好:-)