当前位置: 首页 > 面试题库 >

如何在Spring(4)上下文中为HSQL配置Hikari CP?

元玮
2023-03-14
问题内容

我想在Spring 4.0.3上下文中使用Hikari
CP
,但似乎我缺少了一些东西。

我的bean配置如下所示:

<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource">
   <constructor-arg>
     <bean class="com.zaxxer.hikari.HikariConfig">
       <constructor-arg>
         <props>
           <prop key="dataSource.driverClassName">${database.driver}</prop>
           <prop key="dataSource.jdbcUrl">${database.database.jdbc.url}</prop>
           <prop key="dataSource.port">${database.port}</prop>
           <prop key="dataSource.databaseName">${database.name}</prop>
           <prop key="dataSource.user">${database.user}</prop>
           <prop key="dataSource.password">${database.password}</prop>
         </props>
       </constructor-arg>

     </bean>
   </constructor-arg>
</bean>

但我有一个例外:

Caused by: java.lang.IllegalArgumentException: one of either dataSource or dataSourceClassName must be specified
    at com.zaxxer.hikari.HikariConfig.validate(HikariConfig.java:655)
    at com.zaxxer.hikari.HikariDataSource.<init>(HikariDataSource.java:66)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:148)
    ... 15 more

我试图使用HSQL
org.hsqldb.jdbc.JDBCDataSource配置dataSourceClassName

那样:

<prop key="dataSourceClassName">org.hsqldb.jdbc.JDBCDataSource</prop>

也这样:

<prop key="dataSource.ClassName">org.hsqldb.jdbc.JDBCDataSource</prop>

两次我都有以下异常:

Caused by: java.lang.RuntimeException: java.beans.IntrospectionException: Method not found: setPort
    at com.zaxxer.hikari.util.PropertyBeanSetter.setProperty(PropertyBeanSetter.java:109)
    at com.zaxxer.hikari.util.PropertyBeanSetter.setTargetFromProperties(PropertyBeanSetter.java:61)
    at com.zaxxer.hikari.pool.HikariPool.initializeDataSource(HikariPool.java:497)
    ... 23 more
Caused by: java.beans.IntrospectionException: Method not found: setPort
    at java.beans.PropertyDescriptor.<init>(PropertyDescriptor.java:110)
    at com.zaxxer.hikari.util.PropertyBeanSetter.setProperty(PropertyBeanSetter.java:97)
    ... 25 more

有人可以向我展示 可以与HSQL DB* 一起使用的 Hikari CP Spring 4 bean配置吗? *

MySql,PG等 不感兴趣 ,因为我知道如何使它们工作。但是我无法用HSQL完成它。

谢谢,

使用的技术:Java8,Spring 4.0.3,HSQL 2.3.2


问题答案:

一种完成工作的方法是提供一个DataSource对象的实例:

<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource">
  <constructor-arg>
    <bean class="com.zaxxer.hikari.HikariConfig">
      <property name="dataSource">
        <bean class="org.hsqldb.jdbc.JDBCDataSource">
          <property name="url" value="${database.database.jdbc.url}"/>
          <property name="databaseName" value="${database.name}"/>
          <property name="user" value="${database.user}"/>
          <property name="password" value="${database.password}"/>
        </bean>
      </property>
    </bean>
  </constructor-arg>
</bean>

当然,还有其他解决方案。

HTH,



 类似资料:
  • 在传统的web.xml类型配置中,您可以像这样配置上下文参数 web.xml 这是如何在Spring启动中实现的。我有一个需要参数的过滤器。 我使用的是,并包含了

  • 今天,我将我的项目从Spring Boot1.5.9更新到2.1.1,我的一些测试停止工作。当我开始测试时,控制台会弹出错误: com.example.rest.config.SecurityConfig中的authEntryPoint字段需要一个类型为“com.example.rest.service.auth.EntryPoints.AuthenticationEntryPoint”的bean

  • 出于某些原因,我需要以不同于标准的方式为Spring上下文命名XML文件。 是的,我知道这是一个基本问题,关于堆栈溢出,有几种回答,例如: Spring上下文配置 Spring MVC上下文Hiearchy Spring-MVC:什么是“上下文”和“命名空间”? 然而,我的问题比那些更棘手一点,因为系统只有在web.xml文件同时具有 和 如果我只删除标签A: Java语言io。FileNotFo

  • 使用石英2.2.2 Spring 4.2.4.释放 如何给我配置石英?,只用阳极化全部 启动我的系统好吗 问题包含2 jobFactory for system public SchedulerFactoryBean SchedulerFactoryBean()方法的第一个构建是另一个类的第二个构建,我想是Spring! 我的Quartz配置属性是: 我尝试使用和bean“springQuartz

  • 我有以下项目结构: src/main/resources/meta-inf/applicationcontext.xml src/webapp/web.xml .另外,在构建部分的pom.xml中,我将最终名称设置为“bet-manager-api”。我做错了什么?为什么没有伐木?我检查了tomcat/logs/中的所有日志,但没有找到任何重要的日志。谢谢