Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save sachin-handiekar/52a26f57506f4e8a59f9d03532cc6600 to your computer and use it in GitHub Desktop.
Save sachin-handiekar/52a26f57506f4e8a59f9d03532cc6600 to your computer and use it in GitHub Desktop.
spring:
datasource:
url: jdbc:mysql://localhost:3306/your_database
username: your_username
password: your_password
driver-class-name: com.mysql.cj.jdbc.Driver
type: org.apache.commons.dbcp2.PoolingDataSource
dbcp2:
initial-size: 5
max-total: 10
max-idle: 5
min-idle: 2
max-wait-millis: 10000
Now, configure the DataSource bean and inject it into a JdbcTemplate bean in your Spring Boot application's configuration class:
java
Copy code
import org.apache.commons.dbcp2.PoolingDataSource;
import org.apache.commons.pool2.impl.GenericObjectPool;
import org.apache.commons.dbcp2.ConnectionFactory;
import org.apache.commons.dbcp2.PoolableConnection;
import org.apache.commons.dbcp2.PoolableConnectionFactory;
import org.apache.commons.dbcp2.DriverManagerConnectionFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;
import javax.sql.DataSource;
@Configuration
public class DataSourceConfig {
@Value("${spring.datasource.url}")
private String url;
@Value("${spring.datasource.username}")
private String username;
@Value("${spring.datasource.password}")
private String password;
@Value("${spring.datasource.driver-class-name}")
private String driverClassName;
@Value("${spring.datasource.dbcp2.initial-size}")
private int initialSize;
@Value("${spring.datasource.dbcp2.max-total}")
private int maxTotal;
@Value("${spring.datasource.dbcp2.max-idle}")
private int maxIdle;
@Value("${spring.datasource.dbcp2.min-idle}")
private int minIdle;
@Value("${spring.datasource.dbcp2.max-wait-millis}")
private long maxWaitMillis;
@Bean
public DataSource dataSource() {
ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(url, username, password);
PoolableConnectionFactory poolableConnectionFactory = new PoolableConnectionFactory(connectionFactory, null);
poolableConnectionFactory.setValidationQuery("SELECT 1");
GenericObjectPool<PoolableConnection> connectionPool = new GenericObjectPool<>(poolableConnectionFactory);
connectionPool.setMinIdle(minIdle);
connectionPool.setMaxIdle(maxIdle);
connectionPool.setMaxTotal(maxTotal);
connectionPool.setMaxWaitMillis(maxWaitMillis);
poolableConnectionFactory.setPool(connectionPool);
return new PoolingDataSource<>(connectionPool);
}
@Bean
public JdbcTemplate jdbcTemplate(DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment