在Spring Boot项目中同时集成Telegram Bot和JPA实现数据持久化,是很多业务场景下的常见需求,比如需要存储Bot交互的用户信息、消息记录等数据。但两者依赖的底层组件可能存在版本冲突,需要合理管理依赖才能保证项目正常运行。

核心依赖引入方式
首先需要在项目的pom.xml中引入对应的starter依赖,Spring Boot的starter已经帮我们做好了大部分版本适配工作,优先使用官方starter可以减少冲突概率。
Telegram Bot依赖
目前常用的Telegram Bot Java库是telegrambots,对应的Spring Boot starter可以简化配置:
<dependency>
<groupId>org.telegram</groupId>
<artifactId>telegrambots-spring-boot-starter</artifactId>
<version>6.9.7</version>
</dependency>
JPA依赖
JPA依赖直接使用Spring Boot官方的data JPA starter,它会自动适配Spring Boot版本对应的Hibernate版本:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
常见依赖冲突处理
如果引入依赖后出现启动报错,大概率是版本冲突导致,常见的冲突场景和处理方式如下:
日志依赖冲突
telegrambots默认依赖的日志组件可能和Spring Boot的日志 starter冲突,可以在telegrambots依赖中排除默认的日志依赖:
<dependency>
<groupId>org.telegram</groupId>
<artifactId>telegrambots-spring-boot-starter</artifactId>
<version>6.9.7</version>
<exclusions>
<exclusion>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</exclusion>
</exclusions>
</dependency>
Jackson版本冲突
如果项目中同时用到了JSON序列化功能,telegrambots和JPA可能依赖不同版本的Jackson,此时可以统一指定Jackson版本:
<properties>
<jackson.version>2.15.2</jackson.version>
</properties>
依赖版本适配建议
为了避免依赖冲突,建议遵循以下版本适配规则:
- Spring Boot版本和telegrambots-spring-boot-starter版本尽量匹配,比如Spring Boot 3.x对应telegrambots 6.x及以上版本
- 不要手动指定Hibernate版本,由spring-boot-starter-data-jpa自动管理版本
- 如果使用了自定义的数据源,比如Druid,需要排除JPA starter默认的数据源依赖
基础配置示例
依赖引入完成且无冲突后,需要在application.yml中配置JPA和数据源相关信息:
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/telegram_bot_db?useSSL=false&serverTimezone=UTC
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
hibernate:
ddl-auto: update
show-sql: true
properties:
hibernate:
dialect: org.hibernate.dialect.MySQL8Dialect
telegram:
bot:
username: your_bot_username
token: your_bot_token
验证依赖是否生效
可以编写一个简单的测试类,验证JPA和Telegram Bot的依赖是否都正常加载:
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.telegram.telegrambots.meta.generics.LongPollingBot;
import javax.persistence.EntityManager;
@SpringBootTest
class DependencyTest {
@Autowired(required = false)
private LongPollingBot telegramBot;
@Autowired
private EntityManager entityManager;
@Test
void testDependency() {
// 验证Telegram Bot依赖加载
assert telegramBot != null;
// 验证JPA依赖加载
assert entityManager != null;
System.out.println("依赖加载正常");
}
}
如果测试类运行通过,说明JPA和Telegram Bot的依赖都已经正确管理,后续可以正常开发业务逻辑。
Spring_BootTelegram_BotJPA依赖管理修改时间:2026-07-01 00:15:32