0
DataSource 및 DataSourceTransactionManager 스프링 빈을 사용하여 JobRepository bean에 연결합니다. 이들 중 하나가 수명주기를 인식하지 못하거나 스프링 애플리케이션이 닫히고 나면 연결을 닫는 기능이 없어야합니다. 나가기 전에 수동으로 DataSourceUtils.releaseConnection (...)을 호출하지 않으면 프로세스가 멈추고 있습니다. 내가 여기서 뭔가를 놓치고 있니? 내 코드에이 문제를 일으킬 수있는 다른 버그가 있습니까?DataSource 연결이 해제되지 않습니다.
연결 풀을 사용해야합니까? 연결 수명주기를 올바르게 관리하려면 스프링을 어떻게 만들 수 있습니까?
DriverManagerDataSource
(
http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jdbc/datasource/DriverManagerDataSource.html)에 대한 javadoc의 당
@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();
}