我有一个Spring Boot 1.4.7应用程序,当前正在更新至2.0.5版本。应用程序使用以下配置使用JDBC连接到Oracle DB:
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}
。造成这种情况的原因似乎是切换到HikariCP作为Spring 2.x中的默认连接池。如何将这种配置迁移到Hikari,以允许我将v$session.program
的自定义属性发送到数据库?
我尝试过的事情:
?ApplicationName=<name>
附加到JDBC网址。System.setProperty("oracle.jdbc.v$session.program", <name>)
spring.datasource.hikari.data-source-properties.v$session.program: <name>
答案 0 :(得分:2)
在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
答案 1 :(得分:1)
使用HikariCP池属性(Spring Boot 2中的默认池)
spring:
datasource:
hikari:
data-source-properties:
v$session.program: MyAppName
答案 2 :(得分:0)
您必须像这样使用它:
spring:
datasource:
hikari:
data-source-properties:
"[v$session.program]": MyApp
答案 3 :(得分:0)
如果您想引用 spring.application.name
,您必须像这样使用它:
spring:
datasource:
hikari:
data-source-properties:
"[v$session.program]": ${spring.application.name}