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

我想在我的Spring 4.0.3环境中使用Hikari CP ,但似乎我错过了一些东西。

我的bean配置如下:

     ${database.driver} ${database.database.jdbc.url} ${database.port} ${database.name} ${database.user} ${database.password}      

但我得到一个例外:

 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.(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

那样:

 org.hsqldb.jdbc.JDBCDataSource 

也是这样:

 org.hsqldb.jdbc.JDBCDataSource 

两次我都得到以下exception:

 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.(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对象的实例:

               

肯定还有其他解决方案。

HTH,

如果您使用的是驱动程序类,则示例中的某些属性不需要前缀“dataSource”。

      ${database.driver} ${database.database.jdbc.url} ${database.user} ${database.password}      

并且portdatabaseName可以包含在jdbcUrl

对于纯Java-config解决方案,我使用了以下内容(在具有@Configuration批注的类中并包含在component-scan-path中):

 ... @Bean public DataSource dataSource() { return new HikariDataSource(hikariConfig()); } private HikariConfig hikariConfig() { HikariConfig config = new HikariConfig(); config.setDriverClassName(driverClassName); config.setJdbcUrl(jdbcUrl); config.setUsername(username); config.setPassword(password); return config; } ... 

HTH

在HikariCP 2.3.8和Hibernate 4.3.8.Final下测试:

    org.postgresql.ds.PGSimpleDataSource ${database.username} ${database.password} ${database.databaseName} ${database.serverName} SELECT 1       

对于dataSourceClassName ,查看流行的数据源类名表 。

根据https://github.com/brettwooldridge/HikariCP/issues/225,postgresql需要ConnectionTestQuery ,使用最新的jdbc驱动程序版本时不需要。