SpringBoot+Vue项目的后端接口全部返回500错误

做大作业时,SpringBoot后端连接数据库运行后,测试所有的接口都返回500,报错信息如下

SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@61fa2ac1] was not registered for synchronization because synchronization is not active
JDBC Connection [HikariProxyConnection@1189038771 wrapping com.mysql.cj.jdbc.ConnectionImpl@634a8d8f] will not be managed by Spring
==>  Preparing: SELECT id,name,amount FROM account
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@61fa2ac1]
2022-07-03 14:29:51.015 ERROR 22332 --- [nio-8080-exec-6] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed;nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException:

Error querying database.  Cause: java.lang.reflect.InaccessibleObjectException: Unable to make field protected java.lang.reflect.InvocationHandler java.lang.reflect.Proxy.h accessible: module java.base does not "opens java.lang.reflect" to unnamed module @5119fb47

The error may exist in com/nju/edu/erp/dao/AccountDao.java (best guess)

The error may involve defaultParameterMap

 The error occurred while setting parameters

SQL: SELECT  id,name,amount  FROM account

Cause: java.lang.reflect.InaccessibleObjectException: Unable to make field protected java.lang.reflect.InvocationHandler java.lang.reflect.Proxy.h accessible: module java.base does not "opens java.lang.reflect" to unnamed module @5119fb47] with root cause

相关的配置情况:

  • 数据库是本地MySQL数据库,版本为:8.0.28
  • JDBC连接数据库的驱动jar包版本是:mysql-connector-java:8.0.27
  • jdk版本:1.7

在网上搜索了大量的资料,很难搜到完全一致的报错,而类似的报错都认为是数据库配置的问题,或者是mapper.xml文件中出错。但是经过仔细检查,这些都是正确的。

最后,经过同学和助教的建议,将jdk版本换成1.8就解决了。

简单陈述一下过程:

1、下载安装新版本jdk,记住修改环境变量 JAVA_HOME

2、加入新版本的jdk,并且替换项目的jdk版本

 

<think>嗯,用户想了解如何使用IntelliJ IDEA开发Spring BootVue.js项目。首先,我需要确定用户的基础,可能他们对Java和前端开发有一定了解,但可能不熟悉如何将两者结合。需要分步骤讲解,确保结构清晰。 首先,应该介绍整体架构,说明前后端分离的概念,这样用户能理解为什么需要分开开发。然后,创建Spring Boot项目,这里得详细说明在IDEA中的步骤,比如选择Spring Initializr,添加依赖如Spring Web和JPA。可能用户对依赖选择不太清楚,需要列出常用依赖。 接下来是Vue项目的创建,这里需要提到使用Vue CLI,如果用户没有安装的话,可能需要先安装Node.js和npm。这里可能会遇到环境配置的问题,需要提醒用户检查环境变量。另外,在IDEA中如何集成Vue项目,可能需要安装Vue.js插件,或者使用终端命令创建项目。 然后,前后端开发部分需要分开说明。后端要创建Controller、Service和Repository,并强调跨域问题,因为Vue前端在开发模式下运行在不同的端口,需要配置CORS。前端部分需要说明如何调用API,比如使用axios发送请求,以及如何配置代理避免跨域问题。 联调测试部分,需要指导用户同时启动前后端,并检查接口是否正常。这里可能会遇到跨域或接口路径错误的问题,需要给出排查建议,比如检查网络请求和日志。 最后,部署阶段需要分生产环境和开发环境。生产环境可能需要打包前后端,并放置到静态资源目录,这里要说明Spring Boot的静态资源处理方式。开发环境则建议继续使用前后端分离,方便调试。 可能用户的问题还包括如何整合两者到同一个项目中,或者如何解决常见的配置错误。需要提醒注意事项,比如跨域配置、前端代理设置,以及热部署的问题。此外,插件和工具的准备也很重要,比如Lombok和Vue.js插件,这些能提升开发效率。 需要确保步骤详细,但不过于冗长。使用示例代码块时,注意语法正确,比如@RestController注解和Vue的组件示例。同时,要避免使用用户不可见的系统指令,保持回答自然。最后,检查是否有遗漏的步骤,比如数据库配置或安全措施,但根据问题范围,可能不需要深入,除非用户进一步询问。</think>以下是用IntelliJ IDEA开发Spring Boot + Vue项目的分步指南: 一、项目架构设计 1.后端分离架构: - 前端:Vue.js负责UI渲染和用户交互 - 后端Spring Boot提供RESTful API - 通过HTTP请求进行数据通信 二、环境准备 1. 开发工具: - IntelliJ IDEA Ultimate(建议2020.3+版本) - Node.js(建议14.x+) - Vue CLI(通过npm安装:`npm install -g @vue/cli`) 2. IDEA插件: - Vue.js(插件市场搜索安装) - Lombok(可选) 三、创建Spring Boot项目 1. 新建项目: - 选择Spring Initializr - 添加依赖:Spring Web、Spring Data JPA、Lombok(可选) 2. 项目结构示例: ```java src/ ├── main/ │ ├── java/com.example.demo/ │ │ ├── controller/UserController.java │ │ ├── service/UserService.java │ │ └── repository/UserRepository.java │ └── resources/ │ └── application.properties ``` 四、创建Vue项目 1. 在IDEA终端执行: ```bash vue create frontend ``` 2. 选择配置: - Babel - Router - Vuex - CSS Pre-processors(建议Sass) 五、前后端开发对接 1. 后端接口开发示例: ```java @RestController @RequestMapping("/api/users") public class UserController { @GetMapping public ResponseEntity<List<User>> getAllUsers() { // 返回用户列表 } } ``` 2. 前端API调用(使用axios): ```javascript // src/api/user.js import axios from 'axios' export function getUsers() { return axios.get('/api/users') } ``` 六、跨域配置 1. Spring Boot端配置: ```java @Configuration public class CorsConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("http://localhost:8080") // Vue开发服务器端口 .allowedMethods("*"); } } ``` 七、联调运行 1. 同时启动: - 后端:运行Spring Boot的main类 - 前端:在frontend目录执行`npm run serve` 2. 访问地址: - 前端:http://localhost:8080 - 后端:http://localhost:8081(默认端口) 八、生产部署 1. 前端打包: ```bash npm run build ``` 2. 将dist目录内容复制到Spring Boot的: ``` src/main/resources/static ``` 3. 打包Spring Boot应用: ```bash mvn clean package ``` 常见问题解决方案: 1. 接口404错误: - 检查@RequestMapping路径是否匹配 - 确认前端代理配置(vue.config.js): ```javascript module.exports = { devServer: { proxy: { '/api': { target: 'http://localhost:8081', changeOrigin: true } } } } ``` 2. 热更新失效: - 检查IDEA的自动编译设置 - 开启Build→Compile Automatically - 安装JRebel插件(可选) 优势组合特点: 1. Spring Boot优势: - 快速构建REST API - 完善的生态(Security, JPA等) - 内嵌Tomcat容器 2. Vue优势: - 响应式数据绑定 - 组件化开发 - 丰富的生态系统(Vue Router, Vuex等) 建议开发流程: 1. 先定义API接口文档 2. 并行开发(前端使用Mock数据) 3. 接口联调 4. 集成测试 5. 自动化部署 通过这种架构,可以充分发挥Java后端业务处理方面的优势,同时利用Vue在前端交互体验上的特点,实现高效的全栈开发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值