Created
June 17, 2024 09:06
-
-
Save sachin-handiekar/52a26f57506f4e8a59f9d03532cc6600 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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