spring boot项目中使用jpa的一个未解之谜

2024-04-28 07:08

本文主要是介绍spring boot项目中使用jpa的一个未解之谜,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

公司最近主要的工作就是把之前的一个项目进行几乎全面的重构,之所以说几乎全面,是因为除开业务逻辑外全部换血:
框架由spring+struts2+mybatis改为spring boot+jpa
数据库由sybase+h2改为oracle+redis
子系统之间的交互由activemq改为http
代码具体实现全部重写

对一个运行了若干年的项目进行这样的大动作,路程无疑是漫长而复杂的。在进行了一系列设计文档的编写、评审、修订、再评审之后,终于可以开始码代码了。
本以为码代码终于可以松一口气,没想到在框架搭建阶段便遇到了一头拦路虎:
在进行jpa整合的时候,一切配置完成后,却无论如何不能启动项目,日志中打印了如下的异常信息

[ERROR] [2017-09-11 18:11:39.707] org.springframework.boot.diagnostics.LoggingFailureAnalysisReporter.report [LoggingFailureAnalysisReporter.java : 42] | ***************************
APPLICATION FAILED TO START
***************************Description:Cannot determine embedded database driver class for database type NONEAction:If you want an embedded database please put a supported one on the classpath. If you have database settings to be loaded from a particular profile you may need to active it (the profiles "dev" are currently active).

看这个异常,就是数据库连不上,似乎是配置文件加载不了,但是实际上只要我去掉jpa的jar包,就可以正常运行。
于是网上一顿搜索,但是结果却不尽如人意,看了十几个答案,基本上都是一样的:

原因是:springboot启动时会自动注入数据源和配置jpa 解决:在@SpringBootApplication中排除其注入
@SpringBootApplication(exclude={DataSourceAutoConfiguration.class,HibernateJpaAutoConfiguration.class})

但是很明显,我就是要用数据库,这样一排除掉自然是启动不报错了,但是我却用不了了,于是我便求助了一下之前专门研究了一段时间jpa的同事。
他看了下我的项目后,说少了h2的jar包,于是在pom.xml中加入了h2的依赖

<dependency>  <groupId>com.h2database</groupId>  <artifactId>h2</artifactId>  <version>1.3.175</version>  
</dependency>

没想到加入这个jar之后再次运行项目,还真的是成功启动并连接上数据库了!
只不过,项目虽然成功启动,他却也说不出来为什么要这样改,之所以这样改了,只是因为一个偶然。
后来我也再次查看了项目框架中的代码,依旧没有找到哪里用到了h2,因此这个问题便暂时成为了未解之谜!
由于任务催的紧,一时之间也没有那么多时间深入去探究,只能做个记录,留待后边空闲点了继续刨根问底,也希望知道答案的朋友不吝赐教,感激不尽!

这篇关于spring boot项目中使用jpa的一个未解之谜的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/942599

相关文章

如何使用celery进行异步处理和定时任务(django)

《如何使用celery进行异步处理和定时任务(django)》文章介绍了Celery的基本概念、安装方法、如何使用Celery进行异步任务处理以及如何设置定时任务,通过Celery,可以在Web应用中... 目录一、celery的作用二、安装celery三、使用celery 异步执行任务四、使用celery

使用Python绘制蛇年春节祝福艺术图

《使用Python绘制蛇年春节祝福艺术图》:本文主要介绍如何使用Python的Matplotlib库绘制一幅富有创意的“蛇年有福”艺术图,这幅图结合了数字,蛇形,花朵等装饰,需要的可以参考下... 目录1. 绘图的基本概念2. 准备工作3. 实现代码解析3.1 设置绘图画布3.2 绘制数字“2025”3.3

在Ubuntu上部署SpringBoot应用的操作步骤

《在Ubuntu上部署SpringBoot应用的操作步骤》随着云计算和容器化技术的普及,Linux服务器已成为部署Web应用程序的主流平台之一,Java作为一种跨平台的编程语言,具有广泛的应用场景,本... 目录一、部署准备二、安装 Java 环境1. 安装 JDK2. 验证 Java 安装三、安装 mys

Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单

《Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单》:本文主要介绍Springboot的ThreadPoolTaskScheduler线... 目录ThreadPoolTaskScheduler线程池实现15分钟不操作自动取消订单概要1,创建订单后

JAVA中整型数组、字符串数组、整型数和字符串 的创建与转换的方法

《JAVA中整型数组、字符串数组、整型数和字符串的创建与转换的方法》本文介绍了Java中字符串、字符数组和整型数组的创建方法,以及它们之间的转换方法,还详细讲解了字符串中的一些常用方法,如index... 目录一、字符串、字符数组和整型数组的创建1、字符串的创建方法1.1 通过引用字符数组来创建字符串1.2

Jsoncpp的安装与使用方式

《Jsoncpp的安装与使用方式》JsonCpp是一个用于解析和生成JSON数据的C++库,它支持解析JSON文件或字符串到C++对象,以及将C++对象序列化回JSON格式,安装JsonCpp可以通过... 目录安装jsoncppJsoncpp的使用Value类构造函数检测保存的数据类型提取数据对json数

python使用watchdog实现文件资源监控

《python使用watchdog实现文件资源监控》watchdog支持跨平台文件资源监控,可以检测指定文件夹下文件及文件夹变动,下面我们来看看Python如何使用watchdog实现文件资源监控吧... python文件监控库watchdogs简介随着Python在各种应用领域中的广泛使用,其生态环境也

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

SpringCloud集成AlloyDB的示例代码

《SpringCloud集成AlloyDB的示例代码》AlloyDB是GoogleCloud提供的一种高度可扩展、强性能的关系型数据库服务,它兼容PostgreSQL,并提供了更快的查询性能... 目录1.AlloyDBjavascript是什么?AlloyDB 的工作原理2.搭建测试环境3.代码工程1.

Java调用Python代码的几种方法小结

《Java调用Python代码的几种方法小结》Python语言有丰富的系统管理、数据处理、统计类软件包,因此从java应用中调用Python代码的需求很常见、实用,本文介绍几种方法从java调用Pyt... 目录引言Java core使用ProcessBuilder使用Java脚本引擎总结引言python