Установка уровня изоляции транзакции через свойства 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 не позволяет установить уровень изоляции транзакции по умолчанию. Тем не менее, вы можете это сделать, но вы должны строго придерживаться конкретной реализации. Приведу пару примеров:
- Если вы используете реализацию DataSource в Apache BasicDataSource, вы можете использовать это . Это для DBCP.
- Если вы используете Apache BasicDataSource, но для DBCP2, вы можете сделать что-то вроде этого .
- Но в большинстве случаев, если мы говорим о Spring, мы используем Hikari Connection Pool. Итак, в случае HikariCP вы можете использовать этот метод.
То же самое применимо к Spring Boot. Позвольте мне объяснить - используя файл свойств Spring Boot, вы можете установить уровень изоляции транзакции по умолчанию, но для конкретного источника данных я имею в виду это свойство:
spring.datasource.hikari.transaction-isolation
как вы, наверное, заметили, позвольте вам установить уровень изоляции транзакции по умолчанию для HikariCP (если вы его используете) И это свойство:
spring.datasource.dbcp2.default-transaction-isolation
позволяют настроить уровень изоляции по умолчанию для DBCP2.
Надеюсь, это помогло, хорошего дня! :)