Почему заполнитель не установлен должным образом в hikari.data-source-properties - PullRequest
0 голосов
/ 31 октября 2019

Я устанавливаю hikari.data-source-properties с заполнителем, но значение заполнителя не подставляется. Это приложение на основе Spring-boot 2.1.4.RELEASE. Мое намерение состоит в том, чтобы установить свойства сеанса, чтобы администраторы баз данных могли идентифицировать мое приложение. В настоящее время я получаю значение по умолчанию JDBC Thin Client для моего подключения при запуске SELECT PROGRAM FROM V$SESSION из БД

Ниже приведено то, что у меня есть в моем application.yml файле

spring:
    datasource:
        url: "jdbc:oracle:thin:@machine:1521:service_name"
        driver-class-name: "oracle.jdbc.driver.OracleDriver"
        hikari.data-source-properties:
            v$session.program:${spring.application.name}

Ниже приведено то, что яесть в моем bootstrap.yml файле

spring:
    application:
        name: ms-db-service

Когда я запрашиваю базу данных Oracle, я замечаю, что значение для программы буквально ${spring.application.name} вместо ожидаемого значения ms-db-service

Я попробовал следующее, с тем же логическим результатом:

  • Попытка переопределить spring.application.name снова в application.yml
  • Попытка с использованием другого локально определенногоключ ${name}
  • Добавлен следующий компонент
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
    return new PropertySourcesPlaceholderConfigurer();
}
  • Попытка указать свойство как таковое: spring.datasource.hikari.data-source-properties: v$session.program=${spring.application.name}

Я попробовал следующие пункты, чтобы получить больше информации о ситуации:

  • Я попытался использовать заполнитель для spring.datasource.url, и это сработало
  • Я попытался прочитатьзначение вручную, используя приведенный ниже код, и это показывает правильные значения: @Value("${spring.datasource.hikari.data-source-properties}") String propVal;

Мой вывод заключается в том, что HikariCp читает этизначения до замены заполнителя. Я не понимаю относительную синхронизацию того, когда создание бина замещения и источника данных происходит в жизненном цикле бина с пружинной загрузкой

Я пытаюсь избежать использования bean для источника данных hikaricp (не уверен, чтодаже решит проблему), так как я не хочу вручную создавать весь источник данных, так как hikari поддерживает огромное количество свойств.

Итак, как я могу установить spring.datasource.hikari.data-source-properties в application.yml, используя заполнитель,И есть ли другой способ назначить spring.application.name для идентификации моего текущего подключения к БД?

...