Я использую весенние бобы DataSource и DataSourceTransactionManager и подключаю их к компоненту JobRepository. Если ни один из них не знает о жизненном цикле или не имеет близкой функции, чтобы закрыть соединение, когда мое пружинное приложение закрывается. Мой процесс висит, если я вручную не вызову DataSourceUtils.releaseConnection (...) перед выходом. Я что-то упустил? Есть ли какая-то другая ошибка в моем коде, которая может вызвать это?Связи DataSource не освобождаются
Нужно ли использовать пул соединений? Как заставить весну правильно управлять жизненным циклом соединения.
@Bean
public DataSource dataSource(@Value("${batch_db.url}") String dataSourceUrl, AWSCredentials awsCredentials) {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl(dataSourceUrl);
dataSource.setUsername(awsCredentials.getAWSAccessKeyId());
dataSource.setPassword(awsCredentials.getAWSSecretKey());
return dataSource;
}
@Bean
@DependsOn(value = "dataSource")
public DataSourceTransactionManager transactionManager(DataSource dataSource) {
DataSourceTransactionManager transactionManager = new DataSourceTransactionManager();
transactionManager.setDataSource(dataSource);
return transactionManager;
}
@Bean
@DependsOn(value = "dataSource")
public JobRepository jobRepository(DataSource dataSource, PlatformTransactionManager transactionManager) throws Exception {
JobRepositoryFactoryBean jobRepository = new JobRepositoryFactoryBean();
jobRepository.setDataSource(dataSource);
jobRepository.setTransactionManager(transactionManager);
return jobRepository.getJobRepository();
}