package eu.dnetlib.repo.manager.config; import org.apache.commons.dbcp.BasicDataSource; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.transaction.annotation.EnableTransactionManagement; @Configuration @EnableTransactionManagement public class DatasourceConfiguration { private static Logger LOGGER = Logger.getLogger(DatasourceConfiguration.class); @Value("${services.provide.db.driverClassName}") private String driverClassname; @Value("${services.provide.db.url}") private String URL; @Value("${services.provide.db.username}") private String username; @Value("${services.provide.db.password}") private String password; @Bean public BasicDataSource dataSource(){ BasicDataSource basicDataSource = new BasicDataSource(); basicDataSource.setDriverClassName(driverClassname); basicDataSource.setUrl(URL); basicDataSource.setUsername(username); basicDataSource.setPassword(password); basicDataSource.setMaxIdle(10); basicDataSource.setMaxActive(100); basicDataSource.setMaxWait(1000); basicDataSource.setValidationQuery("SELECT 1;"); basicDataSource.setTestOnBorrow(true); basicDataSource.setTestOnReturn(true); basicDataSource.setTestWhileIdle(true); basicDataSource.setTimeBetweenEvictionRunsMillis(1200000); basicDataSource.setMinEvictableIdleTimeMillis(1800000); basicDataSource.setMinEvictableIdleTimeMillis(5); basicDataSource.setPoolPreparedStatements(true); basicDataSource.setDefaultAutoCommit(true); return basicDataSource; } @Bean public DataSourceTransactionManager txManager(){ DataSourceTransactionManager txManager = new DataSourceTransactionManager(); txManager.setDataSource(dataSource()); return txManager; } }