我们正在使用弹簧靴 1.5.9.RELEASE 。我们的maven依赖项中有spring-boot-starter-data-jpa
和mysql-connector-java
连接到MySQL数据库。我们尚未配置任何连接池。根据{{3}},因为我们使用的是spring-boot-starter-data-jpa
,所以tomcat连接池被用作默认连接池。但是,当我们尝试将连接池属性设置为spring.datasource.tomcat.*
时,它将无法正常工作。但是,当使用spring.datasource.*
格式时,同样如此。
即spring.datasource.max-active=50
在spring.datasource.tomcat.max-active=50
不工作的地方工作。我通过在主类中打印数据源来确认这一点,对于该类,我将获得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
中使用它。