Мы используем пружинный башмак 1.5.9.RELEASE . У нас есть spring-boot-starter-data-jpa
и mysql-connector-java
в нашей зависимости maven для подключения к базе данных MySQL. Мы не настроили ни одного пула соединений. Согласно документации , поскольку мы используем spring-boot-starter-data-jpa
пул соединений tomcat, используется в качестве пула соединений по умолчанию. Но когда мы пытаемся установить свойства пула соединений как spring.datasource.tomcat.*
, это не работает. Но то же самое работает, когда используется формат spring.datasource.*
.
Т.е. spring.datasource.max-active=50
работает там, где spring.datasource.tomcat.max-active=50
не работает. Я подтвердил это, напечатав Datasource в основном классе, для которого я получаю org.apache.tomcat.jdbc.pool.DataSource@<objecthash>{key1=value1; key2=value2; ....}
в качестве вывода.
Почему это происходит? Это потому, что мы используем mysql-connector-java
, он не читает свойства пула соединений Tomcat? если это так, то когда я печатаю источник данных, как я получаю org.apache.tomcat.jdbc.pool.DataSource@a1f72f5
в качестве источника данных с настроенными значениями? Или я что-то упустил из документации? или JPA не работает должным образом?
pom.xml:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath />
</parent>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
</dependencies>
Mainclass.java
import javax.sql.DataSource;
@SpringBootApplication
public class MainClass implements CommandLineRunner {
@Autowired
DataSource dataSource;
public static void main(String[] args) {
SpringApplication.run(MainClassChild.class, args);
}
@Override
public void run(String... args) throws Exception {
System.out.println("DATASOURCE = " + dataSource);
}
}
Application.properties
spring.datasource.url=jdbc:mysql://1.2.3.4/dbname?useSSL=false
spring.datasource.username=username
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#Working
spring.datasource.max-active=30
spring.datasource.max-idle=20
spring.datasource.min-idle=10
#Not Working
spring.datasource.tomcat.max-active=30
spring.datasource.tomcat.max-idle=20
spring.datasource.tomcat.min-idle=10
Примечание: мы автоматически подключаем jdbctemplate
и используем его в DAO
.