前端视角 | 从零搭建并启动若依后端(环境配置)

前端视角 | 从零搭建并启动若依后端(环境配置)
前言

作为前端开发,因前后端联调需求需启动若依Java后端,本文记录从环境准备到后端启动的完整流程,适配本地已有JDK17(安卓项目)、MySQL8.0(Node后端)的场景,全程不破坏原有开发环境。

一、环境准备(核心:不卸载原有环境,按需适配)

若依官方推荐

JDK >=1.8(推荐1.8版本) Mysql >=5.7.0 (推荐5.7版本) Maven >=3.0 Redis >=5.0 非官方推荐 

安装开发工具(推荐 IntelliJ IDEA 社区版)

  • 作用:打开、编译、运行 Java 代码的工具,比记事本 / VS Code 更友好。
  • 下载地址:IDEA 官网(选 Community 社区版,免费)。
  • 安装:一路下一步,安装时勾选 “Add launchers dir to PATH”(添加到环境变量)。
1. JDK环境配置(若依需JDK1.8,保留JDK17供安卓使用)
  • 现状:本地已有JDK1.8.0_361、JDK17、JDK19,JDK17用于安卓项目(若没有JDK,需下载安装)
    官方:Oracle JDK8 (可能需要注册,略麻烦)
    非官方:OpenJDK 8(免费无需注册)
  • 配置方式(IDEA内隔离配置,不修改全局环境):
    1. 打开IDEA → FileProject Structure(Ctrl+Alt+Shift+S);
    2. 左侧Platform SettingsSDKs → 点击+Add SDKJava,选择本地C:\Program Files\Java\jdk1.8.0_361
    3. 左侧Project SettingsProjectProject SDK1.8 (jdk1.8.0_361)Project language level8 - Lambdas, type annotations etc.

验证:启动项目后,IDEA运行日志中出现C:\Program Files\Java\jdk1.8.0_361\bin\java.exe即配置生效(验证版本时无需关注Terminal的java -version显示JDK17)。
项目启动,如图所示,点击RuoYiApplication文件右键:

在这里插入图片描述
2. Redis安装与配置(若依>=3.0)
  • 下载:Windows版Redis(推荐5.0.14.1,解压至D:\Redis-x64-5.0.14.1,无中文/空格路径);
  • 启动:
    1. 管理员身份运行redis-server.exe redis.windows.conf(保持窗口打开);
    2. 验证:新开CMD执行redis-cli.exe → 输入ping返回PONG即正常;
  • 若依配置:无需修改application.yml中Redis默认配置(host=localhost、port=6379、无密码);

常见问题:持久化权限报错(MISCONF Redis is configured to save RDB snapshots),解决(主要是权限问题,需管理员权限打开Redis):

# 进入redis-cli执行 config set stop-writes-on-bgsave-error no 
3. Maven配置(若依>=3.0)
  • 下载地址:Maven 官网(选类似apache-maven-3.6.3-bin.zip的包);
  • 解压到非中文路径(比如D:\Maven);
  • 配置环境变量:新建MAVEN_HOME= 解压路径,Path新增%MAVEN_HOME%\bin;
  • 验证:IDEA终端执行mvn -v,确保版本≥3.0;
  • 优化配置(加快依赖下载):
    1. IDEA中配置:FileSettingsBuild ToolsMaven,指定Maven home directory和修改后的settings.xml

找到Maven安装目录conf/settings.xml,在<mirrors>内添加阿里云镜像:

 <mirror> <id>aliyunmaven</id> <mirrorOf>central</mirrorOf> <url>https://maven.aliyun.com/repository/public</url> </mirror> 
4. MySQL配置(适配本地8.0.43,无需降级5.7)
  • 没有数据库的可提前进行下载安装,官方网址:MySQL下载安装后,管理员权限进入命令提示符(CMD),启动数据库
net start mysql mysql -u 用户名 -p 用户名一般是root 
  • 导入SQL脚本(可视化工具执行,我用的是HeidiSQL,避免命令行路径问题):
    1. 切换至ruoyi_admin库;

若依连接配置(修改application-druid.yml):

在这里插入图片描述


代码

 spring: datasource: druid: master: url: jdbc:mysql://localhost:3306/ruoyi_admin?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true username: root # 本地MySQL用户名 password: 123456 # 本地MySQL密码 driver-class-name: com.mysql.cj.jdbc.Driver # 8.0专属驱动 

导入若依sql目录下的ry_20250522.sqlquartz.sql

在这里插入图片描述

新建若依专属库(隔离Node后端数据):

CREATE DATABASE IF NOT EXISTS ruoyi_admin DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; 

二、启动若依后端

  1. 启动Redis(管理员身份运行redis-server.exe);
  2. 打开IDEA,加载若依后端代码;
  3. 找到启动类RuoYiApplication.java,右键→Run 'RuoYiApplication'
  4. 验证启动成功:
    • IDEA日志无红色报错,最终显示Started RuoYiApplication in XX seconds
    • 浏览器访问http://localhost:8080,出现若依登录页,提示通过前端UI访问

三、前后端联调最后一步(最拿手的)

修改若依前端项目.env.development文件:

VUE_APP_BASE_API = 'http://localhost:8080' 

启动前端(npm run dev),即可正常访问登录页并联调。

四、关键注意事项

  1. JDK:仅在IDEA内为若依配置JDK1.8,全局保留JDK17,不影响安卓项目;
  2. MySQL:8.0需修改驱动类为com.mysql.cj.jdbc.Driver,URL补充allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
  3. Redis:必须管理员启动,避免持久化权限报错;
  4. 路径:所有安装目录(JDK/Redis/Maven/若依代码)避免中文/空格,防止解析错误。

Read more

实战:手写一个通用Web层鉴权注解,解决水平权限漏洞

实战:手写一个通用Web层鉴权注解,解决水平权限漏洞

实战:手写一个通用Web层鉴权注解,解决水平权限漏洞 * 一、背景:一次渗透测试引发的改造 * 二、需求分析:如何高效修复 * 三、业务模型:用户-公司授权关系 * 四、整体架构设计 * 五、代码实现:一步一步来 * 5.1 注解定义 * 5.2 权限管理服务 * 5.3 AOP切面:核心逻辑 * 六、使用示例 * 6.1 场景1:最简单的用法 * 6.2 场景2:对象属性 * 6.3 场景3:批量操作 * 6.4 场景4:嵌套属性 * 6.5 场景5:类级别默认配置 * 七、

一位过来人的 Web 前端开发全维准备指南

一位过来人的 Web 前端开发全维准备指南

真正拉开开发者差距的,不是敲下第一行代码的速度,而是动笔之前思维框架的深度。 在这个数字化渗透进每个角落的时代,Web 前端开发早已不是当年那个“切图仔”的简单活儿。它是连接用户与数字世界的桥梁,是产品体验的灵魂载体,更是一门融合了艺术感性与工程理性的复杂学科。当无数零基础的学习者怀揣着改变职业轨迹的梦想,准备敲下人生第一个 <html> 标签时,我想邀请你们稍作停留。 本文不急于教你如何写代码,而是希望与你深入探讨:在真正踏上这条充满魅力与挑战的道路之前,我们需要在思维、心态、知识和工具上做哪些准备,才能让这段旅程走得更稳、更远、更具成长性。 一、思维重构:像工程师一样思考 学习前端的第一步,不是下载编辑器,而是启动大脑的“编程思维”模式。这是一种将现实世界的复杂问题,转化为计算机能够理解和执行的逻辑化、结构化思考方式。 抽象能力:从具象到通用 当你面对一个精美的网页时,编程思维会让你下意识地拆解它:这个导航栏可以抽象成一个包含 Logo 和菜单项的组件;这个商品卡片,可以提炼为一个可复用的模板,由图片、标题、价格三个数据槽位构成。

【前端高频面试题】 - TypeScript 篇

【前端高频面试题】 - TypeScript 篇 1. 请解释 TypeScript 是什么?它与 JavaScript 的核心区别是什么? 面试回答需突出 TS 的核心价值(类型安全)和与 JS 的关键差异,结构清晰: * TypeScript 定义:TS 是 JavaScript 的超集(Superset),在 JS 语法基础上增加了静态类型系统,最终会编译为纯 JS 运行(支持所有 JS 环境),核心目标是提升代码可维护性、减少运行时错误。 * 与 JavaScript 的核心区别(分点对比): 1. 类型系统:TS 有静态类型(编译阶段检查类型,变量声明时需指定/推断类型);JS 是动态类型(

【Tauri框架学习】Tauri 与 React 前端集成:通信机制与交互原理详解

【Tauri框架学习】Tauri 与 React 前端集成:通信机制与交互原理详解

Tauri 与 React 前端集成:通信机制与交互原理详解 * Tauri 与 React 前端集成:通信机制与交互原理详解 * **一、Tauri 与 React 的集成基础** * **1. 项目结构** * **2. 环境准备** * **二、Tauri 与 React 的通信机制** * **1. 核心机制:命令调用(Command)** * **2. 事件驱动:事件监听(Event)** * **3. 通信流程** * **三、具体示例:React 与 Rust 交互** * **场景1:React 调用 Rust 命令(文件读取)** * **Step 1:Rust 后端定义命令*