Add below jar in build.gradle
implementation 'org.apache.tomcat:tomcat-jdbc:9.0.33'
application.properties
server.port=9090 #logging.level.org.springframework=DEBUG #DataSource Setting spring.datasource.type = org.apache.tomcat.jdbc.pool.DataSource spring.datasource.url=jdbc:mysql://localhost:3306/mysql spring.datasource.username=tyson spring.datasource.password=tyson spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver #Tomcat Connection Pool settings spring.datasource.tomcat.initial-size=15 spring.datasource.tomcat.max-wait=10000 spring.datasource.tomcat.max-active=50 spring.datasource.tomcat.max-idle=15 spring.datasource.tomcat.min-idle=8 spring.datasource.tomcat.default-auto-commit=true spring.datasource.tomcat.test-on-borrow=true spring.datasource.tomcat.test-on-return=true spring.datasource.tomcat.test-on-connect=true
Code :
@Autowired DataSource dataSource; @Bean public JdbcTemplate jdbcTemplate() throws SQLException { System.out.println(dataSource); JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); return jdbcTemplate; }
You can also create Connection pool via Java Code :
//import org.apache.tomcat.jdbc.pool.DataSource; //import org.apache.tomcat.jdbc.pool.PoolProperties; @Bean public JdbcTemplate jdbcTemplate() throws SQLException { System.out.println(dataSource); JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); return jdbcTemplate; } @Bean public DataSource getTomcatDataSource() { PoolProperties p = new PoolProperties(); p.setUrl("jdbc:mysql://localhost:3306/mysql"); p.setDriverClassName("com.mysql.cj.jdbc.Driver"); p.setUsername("tyson"); p.setPassword("tyson"); p.setJmxEnabled(true); p.setTestWhileIdle(false); p.setTestOnBorrow(true); p.setValidationQuery("SELECT 1"); p.setTestOnReturn(false); p.setValidationInterval(30000); p.setTimeBetweenEvictionRunsMillis(30000); p.setMaxActive(100); p.setInitialSize(10); p.setMaxWait(10000); p.setRemoveAbandonedTimeout(60); p.setMinEvictableIdleTimeMillis(30000); p.setMinIdle(10); p.setLogAbandoned(true); p.setRemoveAbandoned(true); p.setJdbcInterceptors("org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;" + "org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer"); DataSource datasource = new DataSource(); datasource.setPoolProperties(p); return datasource; }
You can check if Tomcat connection pool is created at startup when you see below message on log
Read Me :
https://tomcat.apache.org/tomcat-8.0-doc/jdbc-pool.html
http://tomcat.apache.org/tomcat-8.0-doc/jdbc-pool.html#Common_Attributes