Каким образом в Spring обеспечить создание только одного экземпляра DataSource при запуске приложения, если их несколько?
Answer from AI
sobes.tech AI
В Spring для обеспечения создания только одного экземпляра DataSource при запуске приложения можно использовать следующие подходы:
-
Singleton Bean по умолчанию: По умолчанию Spring создает бины с синглтон-скоупом, поэтому если DataSource объявлен как бин, он будет единственным экземпляром.
-
Конфигурация через @Configuration и @Bean:
@Configuration
public class DataSourceConfig {
@Bean
public DataSource dataSource() {
// Создание и настройка DataSource
return new HikariDataSource();
}
}
-
Избегать дублирующих конфигураций: Если в проекте несколько конфигураций создают DataSource, нужно объединить их или использовать профили (@Profile), чтобы активировался только один.
-
Использование @Primary: Если есть несколько бинов DataSource, можно пометить один как @Primary, чтобы Spring выбирал его по умолчанию.
-
Проверка автоконфигурации: В Spring Boot можно отключить автоконфигурацию DataSource, если создаете бин вручную, чтобы избежать создания нескольких экземпляров.
Таким образом, правильная конфигурация и управление скоупом бинов обеспечивают создание единственного экземпляра DataSource.