在 Spring 中使用 HikariCP 连接到 Oracle 数据库时发送应用程序名称

问题描述 投票:0回答:4

我有一个 Spring Boot 1.4.7 应用程序,目前正在更新到版本 2.0.5。该应用程序使用以下配置使用 JDBC 连接到 Oracle 数据库:

spring:
  jpa:
    database-platform: org.hibernate.dialect.Oracle12cDialect
  datasource:
    url: jdbc:oracle:thin:@<db_server>
    username: ${credentials.database.username}
    password: ${credentials.database.password}
    driver-class: oracle.jdbc.OracleDriver.class
    platform: oracle
    tomcat:
      connection-properties: v$session.program=${spring.application.name}

将应用程序更新到 Spring Boot 2.0.5 后,发送到服务器的应用程序名称是

JDBC Thin Client
,而不是
${spring.application.name}
。造成这种情况的原因似乎是在 Spring 2.x 中改用 HikariCP 作为默认连接池。我如何将此配置迁移到 Hikari,以允许我将
v$session.program
的自定义属性发送到数据库?

我尝试过的:

  • ?ApplicationName=<name>
    附加到 JDBC URL。
  • this Stackoverflow 问题中提到的解决方案
  • 设置
    System.setProperty("oracle.jdbc.v$session.program", <name>)
  • 在application.yml中设置
    spring.datasource.hikari.data-source-properties.v$session.program: <name>
java oracle spring-boot jdbc hikaricp
4个回答
4
投票

在 yaml 中,美元符号被转义。

spring.datasource.hikari.data-source-properties.v$session.program: <name>

com.zaxxer.hikari.HikariConfig : dataSourceProperties............{password=<masked>, vsession.program=<name>}

试试这个。

spring:
  datasource:
    hikari:
      data-source-properties: v$session.program=name

2
投票

如果你想引用

spring.application.name
,你必须这样使用它:

spring:
  datasource:
    hikari:
      data-source-properties:
        "[v$session.program]": ${spring.application.name}

1
投票

使用 HikariCP 池属性(Spring Boot 2 中的默认池)

spring:
  datasource:
    hikari:
      data-source-properties:
        v$session.program: MyAppName

0
投票

对于使用基于属性的配置的 Spring 应用程序,以下语法对我有用。

spring.datasource.hikari.data-source-properties=v$session.program=your_app_name

有点奇怪的语法,但它对我有用

OracleDB
&
SpringBoot v2.6

© www.soinside.com 2019 - 2024. All rights reserved.