独立使用时 spring-boot-starter-jdbc 的问题

Posted

技术标签:

【中文标题】独立使用时 spring-boot-starter-jdbc 的问题【英文标题】:Issue with spring-boot-starter-jdbc when using in standalone 【发布时间】:2016-08-10 14:47:43 【问题描述】:

我正在尝试在基于非 web/非 tomcat 的场景中使用 spring-boot-starter-jdbc。

我试图排除 tomcat-jdbc,以便当我启动 spring-boot 应用程序时 tomcat 不会启动。

我遇到的问题是

spring.datasource.initialize=false
spring.datasource.url=jdbc:h2:tcp://localhost:52705/~/test

即使我要求 spring-boot 不自动配置 mem db,如果我不包含 tomcat-jdbc,它总是会启动一个。因此,似乎没有办法在独立类型的应用程序中将 spring-boot-starter-jdbc 与非 mem h2 数据库一起使用。

这个问题有解决方案还是bug?

【问题讨论】:

你的 pom 文件中有 h2 依赖吗? 是的,我有 h2 依赖项。为了证明我包含了tomcat-jdbc,它启动了一个不同的数据源并且没有启动嵌入式数据库。 你是否从你的 webapp 启动了 h2 服务器?如果没有启动,任何基于 tcp 的 jdbc url 都将不起作用 【参考方案1】:

tomcat-jdbc 与 Tomcat 服务器无关。只是 Tomcat 正在寻找更好的 JDBC 连接池库,所以他们做了它并使用了 tomcat 的库名称。

如果您想排除 Web 组件,那么您确实想删除对项目的 spring-boot-starter-web 依赖项,因为其中存在对 spring-boot-starter-tomcat 的依赖项。

【讨论】:

以上是关于独立使用时 spring-boot-starter-jdbc 的问题的主要内容,如果未能解决你的问题,请参考以下文章

什么是`spring-boot-starter` jars?

Spring-boot-starter RabbitMQ 全局错误处理

spring-boot-starter家族成员简介

spring-boot-starter家族成员简介

SpringBoot的spring-boot-starter有哪些(官方)

[redis分布式锁]redisson分布式锁的实现及spring-boot-starter封装