在 Spring 中让 Postgis/JDBC 与 BoneCP 一起工作

Posted

技术标签:

【中文标题】在 Spring 中让 Postgis/JDBC 与 BoneCP 一起工作【英文标题】:Getting Postgis/JDBC to work with BoneCP in Spring 【发布时间】:2015-06-16 03:29:17 【问题描述】:

所以我正在使用 BoneCP 并在 Spring 中创建我的数据源:

<bean id="baseDataSource" abstract="true" class="com.jolbox.bonecp.BoneCPDataSource" destroy-method="close">
   <property name="driverClass" value="#T(io.bigsense.spring.MySpring).dbDriver('$dbms')" />
   <property name="jdbcUrl" value="#T(io.bigsense.spring.MySpring).dbConnectionString('$dbms','$dbHostname','$dbDatabase','$dbPort')" />
   <property name="maxConnectionsPerPartition" value="$dbPoolMaxPerPart"/>
   <property name="minConnectionsPerPartition" value="$dbPoolMinPerPart"/>
   <property name="partitionCount" value="$dbPoolPartitions"/>
   <property name="acquireIncrement" value="5"/>
   <property name="statementsCacheSize" value="100"/>
   <property name="releaseHelperThreads" value="3"/>
</bean>

这些值大部分来自属性文件。在这种特殊情况下,driverClassorg.postgresql.Driver,而我的 jdbcUrl 是从一些自定义函数返回的 jdbc:postgresql://[hostname]:[port]/[database]

我在我的 postgres-9.4 实例上安装了 postgis,并且我发现文档指出,为了通过 JDBC 将 Geography 对象发送到 Postgres,您需要将数据类型添加到连接:

import java.sql.*; 
import java.util.*; 
import java.lang.*; 
import org.postgis.*; 

...
  java.sql.Connection conn; 

  try  
    Class.forName("org.postgresql.Driver"); 
    String url = "jdbc:postgresql://localhost:5432/database"; 
    conn = DriverManager.getConnection(url, "postgres", ""); 
    ((org.postgresql.Connection)conn).addDataType("geometry","org.postgis.PGgeometry")
;   ((org.postgresql.Connection)conn).addDataType("box3d","org.postgis.PGbox3d");

我的问题是,我如何使用我的 BoneCP 设置来做到这一点?如果我从我的 BoneCP 数据源执行 getConnection(),我不能将其大小写为 org.postgresql.PGConnection,因为它的类型实际上是 com.jolbox.bonecp.ConnectionHandle 的类型。

在使用 Spring 应用程序上下文中定义的 BoneCP 数据源时,如何使用底层 Postgres 驱动程序设置 PostGIS 数据类型?

【问题讨论】:

【参考方案1】:

我发现了答案。我需要使用 postgis DriverWrapper 类:http://postgis.refractions.net/documentation/javadoc/org/postgis/DriverWrapper.html

【讨论】:

以上是关于在 Spring 中让 Postgis/JDBC 与 BoneCP 一起工作的主要内容,如果未能解决你的问题,请参考以下文章

Spring中让人眼前一亮的11个小技巧

Mybatis和Spring整合&逆向工程

Spring Boot引入某个包下部分Bean

在 iOS 中让按钮播放声音

如何在 Javafx 中让 Treeview DisclosureNode 正确?

在clojure中让vs def