【问题标题】:Configuring postgresql driver through Spring xml datasource通过 Spring xml 数据源配置 postgresql 驱动程序
【发布时间】:2016-03-22 12:11:17
【问题描述】:

我一直在尝试配置使用 xml Spring 配置文件中声明的 postgresql 数据源建立的连接。

<bean id="myDataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="org.postgresql.Driver" />
        <property name="url" value="jdbc:postgresql://localhost:5432/dbname" />
        <property name="username" value="postgres" />
        <property name="password" value="" />
        <property name="socketTimeout" value="10"/>
    </bean>

我知道,我不应该使用 spring 中的 DriverManagerDataSource 类(我们将很快转向 C3p0 或 DBCP),因为它不是真正的池。 我正在尝试设置 postgresql 连接的 socketTimeout 值(在此处描述 https://jdbc.postgresql.org/documentation/head/connect.html),但当然,“socketTimeout”不是数据源的属性,因此它不起作用。

是否可以通过数据源 xml 的配置来做到这一点?或者我应该在其他地方做吗?因为数据源管理连接我不认为我能做一个

props.setProperty("timeout",30);
Connection conn = DriverManager.getConnection(url, props);

我什至可以用 DriverManagerDataSource 做到这一点吗?我尝试搜索,但没有找到任何有用的东西,因为真正使用它的人并不多。

【问题讨论】:

  • 这就是为什么有一个connectionProperties 属性需要一个Properties 元素。只需添加它。

标签: java sql spring postgresql


【解决方案1】:

谢谢 M. Deinum,我找到了方法。 实际上,即使知道该属性被命名为“connectionProperties”,我也没有找到很多答案(也许人们很少这样使用它?)。所以我把它贴出来:

<bean id="myDataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="org.postgresql.Driver" />
        <property name="url" value="jdbc:postgresql://localhost:5432/dbname" />
        <property name="username" value="postgres" />
        <property name="password" value="" />
        <!--<property name="socketTimeout" value="10"/>-->

        <property name="connectionProperties">
            <props>
                <prop key="socketTimeout">10</prop>
            </props>
        </property>
   </bean>

如果有人有更好/更完整的答案,我会检查一下;)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-23
    • 2017-02-27
    • 2021-03-20
    • 2011-12-21
    • 2021-08-30
    • 1970-01-01
    • 2019-05-13
    相关资源
    最近更新 更多