javax.servlet-api 和 commons-dbcp 在我们的 Spring 应用程序中重要吗?



如何理解javax.servlet-api和commons-dbcp在我们的Spring应用程序中的重要性。

什么时候必须使用它,我们应该在哪里实现?

因为我有像这样的东西 build.gradle

dependencies {
    //compile('javax.servlet:javax.servlet-api:3.1.0')
    //compile('commons-dbcp:commons-dbcp:1.4')
    compile('org.springframework.boot:spring-boot-starter-thymeleaf')
    compile('org.springframework.boot:spring-boot-starter-data-jpa')
    compile('mysql:mysql-connector-java:5.1.31')
    compile('com.google.code.gson:gson:2.4')
    testCompile("org.springframework.boot:spring-boot-starter-test")
}

如果我从build.gradle中删除javax.servlet-api和commons-dbcp,我的应用程序仍然可以按预期运行。

那么它们(javax.servlet-api和commons-dbcp)在幕后实际上做了什么?

也许我知道为什么,因为它已经被Spring Boot Starter开箱即用了。但是,关于它的解释在哪里,我在任何地方都找不到它。

您不需要这些依赖项。 javax.servlet-API 由 Tomcat 提供。 Commons-DBCP 是一个连接池,但 Tomcat 已经包含它自己的连接池作为传递依赖项。
gradle dependencyInsight --dependency tomcat-jdbc输出:

org.apache.tomcat:tomcat-jdbc:8.0.30 (selected by rule)
--- org.springframework.boot:spring-boot-starter-jdbc:1.3.1.RELEASE
     --- org.springframework.boot:spring-boot-starter-data-jpa:1.3.1.RELEASE

您应该使用 tomcat 连接池。

我们更喜欢 Tomcat 池化数据源,因为它的性能和 并发性,因此如果可用,我们始终选择它。

弹簧引导文档