Установка уровня изоляции транзакции через свойства Spring Boot

У меня есть приложение весенней загрузки, которое я настроил большинство свойств через файл свойств. Однако я искал, если есть способ установить TRANSACTION_ISOLATION_LEVEL через свойства загрузки Spring. Может ли кто-нибудь помочь мне в этом.

Я инициализирую компонент источника данных следующим образом:

@Bean
@ConfigurationProperties(prefix="spring.datasource")
public DataSource dataSource() {
    return buildDataSource("spring.datasource");
}

private DataSource buildDataSource(String propPrefix) {
 Stirng driverClassName = env.getProperty(propPrefix + ".driver-class-name");
 return DataSourceBuilder.create()
        .driverClassName(driverClassName)
        .build();
}

Может кто-нибудь помочь мне, как указать TRANSACTION_ISOLATION_LEVEL через свойства или во время инициализации источника данных.

1 ответ

Таким образом, javax.sql.DataSource не позволяет установить уровень изоляции транзакции по умолчанию. Тем не менее, вы можете это сделать, но вы должны строго придерживаться конкретной реализации. Приведу пару примеров:

  1. Если вы используете реализацию DataSource в Apache BasicDataSource, вы можете использовать это . Это для DBCP.
  2. Если вы используете Apache BasicDataSource, но для DBCP2, вы можете сделать что-то вроде этого .
  3. Но в большинстве случаев, если мы говорим о Spring, мы используем Hikari Connection Pool. Итак, в случае HikariCP вы можете использовать этот метод.

То же самое применимо к Spring Boot. Позвольте мне объяснить - используя файл свойств Spring Boot, вы можете установить уровень изоляции транзакции по умолчанию, но для конкретного источника данных я имею в виду это свойство:

      spring.datasource.hikari.transaction-isolation

как вы, наверное, заметили, позвольте вам установить уровень изоляции транзакции по умолчанию для HikariCP (если вы его используете) И это свойство:

      spring.datasource.dbcp2.default-transaction-isolation

позволяют настроить уровень изоляции по умолчанию для DBCP2.

Надеюсь, это помогло, хорошего дня! :)

Другие вопросы по тегам