Свойства tomcat пула соединений Spring boot по умолчанию не работают - PullRequest
0 голосов
/ 10 апреля 2019

Мы используем пружинный башмак 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.

...