干掉前端!3分钟纯 Java 注解搭个管理系统,我直接好家伙

Java开发框架芋道(Ruoyi)和若依(RuoYi)选型建议 根据项目规模、团队技术储备及长期规划,合理选择框架可显著提升开发效率与系统稳定性。:芋道更适合中大型分布式系统,若依更轻量且易上手。:芋道功能更全面且深度集成,若依依赖社区生态扩展。:若依社区更成熟,芋道文档对复杂场景支持更优。 阅读详情

点击上方“芋道源码”,选择“设为星标”

管她前浪,还是后浪?

能浪的浪,才是好浪!

每天 10:33 更新文章,每天掉亿点点头发...

源码精品专栏

 

来源:程序员小富

3f6716e0f59fd390187086c00cd75841.jpeg


最近接触到个新项目,发现它用了一个比较有意思的框架,可以说实现了我刚入行时候的梦想,所以这里马不停蹄的和大家分享下。

我刚开始工作接触的项目都还没做前后端分离,经常需要后端来维护页面,有时候觉得自己好像天生不适合干前端,你要是让我研究研究后端的技术,看个中间件源码啊,分析分析什么框架底层原理啊,这都问题不大,偶尔搞一下JS也可以。你要是让我写个css样式,那简直要命了,一点也提不起兴趣,不知道有没有跟我一样的。

d553081d8ab48ec9275015d4f1331207.png

今天要介绍的框架直接不用写页面了,话不多说,下边咱们直奔主题

Erupt一个通用后台管理框架,据说有 超低代码量 、 零前端代码 、零 CURD操作 、无需建表 ,纯Java注解开发 等特色,号称三分钟就可以搭建一个完整的后台管理系统。

额~ 听着好像还挺流批的,到底是不是有这么魔幻,咱们一起用起来感受下。

首先来搭建一下环境,目前Erupt支持Java版本1.8.0及以上、Spring Boot版本2.0及其以上。

搭建easy

pom.xml引入必要的jar包

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!--用户权限管理-->
        <dependency>
            <groupId>xyz.erupt</groupId>
            <artifactId>erupt-upms</artifactId>
            <version>1.6.7</version>
        </dependency>
        <!--接口数据安全-->
        <dependency>
            <groupId>xyz.erupt</groupId>
            <artifactId>erupt-security</artifactId>
            <version>1.6.7</version>
        </dependency>
        <!--后台WEB界面-->
        <dependency>
            <groupId>xyz.erupt</groupId>
            <artifactId>erupt-web</artifactId>
            <version>1.6.7</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>compile</scope>
        </dependency>
    </dependencies>

application.yml 文件只要简单配置数据源就好,提前准备个数据库,说到数据库这里我说个小插曲。

我之前在Github 提交案例代码的时候(https://github.com/chengxy-nds/Springboot-Notebook ),由于没太注意没屏蔽敏感信息,导致云数据库账号泄露了,最近我发现已经有小伙伴在数据库上跑项目了,仔细看了看里边的数据结构,发现像是个毕设项目。

297a4c3d0dcb34aff34e6b00914c39ec.png

本身这个库就是我跑demo案例的一个测试库,为的就是让小伙伴能把更多时间放在研究案例的技术点上,减少搭建环境这种没技术含量的琐碎事。

发现归发现,这里我没改密码,也没删他们的库,如果你要用就继续用着,但玩归玩,闹归闹,你不能乱动不是你的数据 !影响其他人学习就不好了。

spring:
  datasource:
    url: jdbc:mysql://47.93.6.5:3306/erupt2?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
    username: root
    password: 123456
  jpa:
    show-sql: true
    generate-ddl: true
    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
    database: mysql
  profiles:
    active: dev
  mail:
    username: xxxx@qq.com
    password: xxxxxxx
    host: smtp.qq.com
    properties:
      mail.smtp.ssl.auth: true
      mail.smtp.ssl.enable: true
      mail.smtp.ssl.required: true
server:
  port: 8888

说了点题外话,我们继续搞起~

其实到这Erupt的环境就搭建完了,额~ ,这就完了?

咱们什么也没干,项目是个空壳子,一行代码也没写,好像连个表也没建啊!

041194d333a2dc6da74cd7c903a36d98.png

别着急咱们先启动下项目,看到控制台打印出很多建表语句和插入语句,这是因为Erupt框架底层应用JPA持久化,预置创建了一些系统表和数据。

849314fc42f0c0d1ba96265911e7cffc.png

注意 :Erupt预置表只会随项目第一次启动构建一次,如果想重新创建,需删除.Erupt文件(一般在项目的工作空间内),获取文件位置方式

System.getProperty("user.dir")

再看数据库里创建了16张系统表,其中e_upms_user表是用户表,默认只有一个管理员账号,用户名、密码都是erupt。

90459b52b1a015164bb88889705c4f19.png

紧接着我们访问http://127.0.0.1:8888/,看一下是个什么效果,竟然有个完整的登录页面。

a3d2f677db6286ffe34029dadc16315e.png

用上边的用户名、密码直接登录,erupt已经预先实现了完整的权限控等功能,而到这我们几乎是没写过什么代码的,都是框架封装好了的,菜单类数据全部从数据库动态获取,一个基础的后台管理系统就搭建完了,有点哇塞。

cc8235bb803a9c42a456d9d9586d0222.png

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro

  • 视频教程:https://doc.iocoder.cn/video/

有趣的页面

那么问题来了?想要自定义页面怎么办?

开篇我们就说过erupt是零前端代码,全部基于Java注解开发的,接下来用Java注解写个简单页面体验下。

erupt`有两个核心注解`@Erupt`,`@EruptField
  • @Erupt注解修饰类,代表定义一个页面

  • @EruptField注解修饰字段,代表页面上显示的字段名

  • @Power注解控制是否操作按钮,增、删、改、查、导入、导出等

  • @Search注解表示字段为搜索条件

  • @Table注解表示页面取数据对应的表,如果不设置,页面第一次初始化的时候,会根据类字段值自动创建一张和类名一致的表名。

“

注解类型比较多,不一一列举了,更多的自己到官网瞅:https://www.erupt.xyz

下边我们定义一个Student类,加上@Erupt,@EruptField注解,这样页面和元素就算写完了,是不是有点颠覆认知。

/*
 *  @Erupt注解修饰在类上,@EruptField注解修饰在字段上
 *  其他注解均为Jpa注解
 */
@Getter
@Setter
@Erupt(name = "学生表",
        power = @Power(importable = true, export = true)
)
@Entity
//@Table(name = "t_student")
public class Student extends BaseModel {

    @EruptField(
            views = @View(title = "学生姓名"),
            edit = @Edit(title = "学生姓名", notNull = true, search = @Search(vague = true))
    )
    private String studentName;

    @EruptField(
            views = @View(title = "所属班级"),
            edit = @Edit(title = "所属班级", notNull = true)
    )
    private String studentClass;

    @EruptField(
            views = @View(title = "学生年龄"),
            edit = @Edit(title = "学生年龄", notNull = true)
    )
    private String studentAge;

    @Lob
    @EruptField(
            views = @View(title = "学生性别"),
            edit = @Edit(title = "学生性别", notNull = true)
    )
    private String studentSex;

    @EruptField(
            views = @View(title = "考核状态"),
            edit = @Edit(title = "考核状态", notNull = true, boolType = @BoolType(trueText = "通过", falseText = "挂科"), search = @Search)
    )
    private Boolean status;
}

但此时新创建的页面不会显示出来,还需要我们手动做一个映射关系,在菜单维护中自定义个菜单,类型值 一定要为新建的 类名 Student。

8e19dfec8eb386a46558c7cbf9b7b60e.png

保存刷新后会看到我们的新页面出现了,而且页面的功能很完整,基础操作、查询、导入、导出功能都自动实现了。

29f9a35081a169c14bd40836c8d7bd28.png

页面新增一个学生信息,对应的Student表也多了条记录,而这个持久化的过程完全由框架来做。

660beb28fcaaabb43fa65f12a7e4a5ec.png

尽管Erupt 框架对前后端代码做了深度封装,但它提供了丰富灵活的自定义接口,来满足我们的个性化需求。

比如我们在录入新学生信息时,希望屏蔽名字为张三的同学,可以对页面按钮功能做代理dataProxy,实现自定义的逻辑,对哪个按钮代理就实现对应方法即可,如beforeAdd、afterAdd是对新增按钮的代理。

@Getter
@Setter
@Erupt(name = "学生表",dataProxy = {StudentDataProxy.class},
        power = @Power(importable = true, export = true)
)
@Entity
//@Table(name = "t_student")
public class Student extends BaseModel {

}
public class StudentDataProxy implements DataProxy<Student> {

    @Override
    public void beforeAdd(Student student) {
        //后台字段校验
        if ("张三".equals(student.getStudentName())) {
            throw new EruptApiErrorTip("名称禁止为张三!");
        }
    }

    @Override
    public void afterAdd(Student student) {

    }
    @Override
    public void afterUpdate(Student student) {

    }

    @Override
    public void afterDelete(Student student) {
    }
}

当我们在页面录入名字为张三的同学时,成功屏蔽。其他类似的功能还有很多,这里就不一一举例了,看文档看文档~

cfb8c8e679d782be9b9e7dca9b65f6ae.png

如果我们想要按传统的方式开发接口,不用担心会和Erupt的页面生成规则有冲突,丝毫不会受影响。而且Erupt内部集成了JPA,提供了现成的dao接口,只要调用对应API即可上手开发。

542f4b03bf086f2fa2248d54975fec04.png

如果你不想手写Java代码也没关系,Erupt还提供了代码生成器,自定义Java类名和字段名,可以生成代码,直接copy就行了。

f6e2a9d567296e0d9c11dc74cb810623.png 4e7f32776484f46923de62ea056df29a.png

说到这我只介绍了Erupt一丢丢的基础特性,主要是想让小伙伴知道有这么个敏捷利器。

不仅如此它还支持丰富的数据类型,内置了像定时任务管理、多表联合查询、前后端分离部署、接口权限、操作记录、多数据源、邮件系统、黑白名单等等很多实用功能,都直接调用API就可以用。

f690680709c60ebc871dc3fb738b5f5a.png

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/yudao-cloud

  • 视频教程:https://doc.iocoder.cn/video/

说在后边

Erupt 框架的优点是显而易见的,快捷、高效、上手容易,对新手相当的友好,但在实际生产环境中我只是用它来做一些配置字典类的数据管理。

因为它的深度封装虽然让开发变的简单高效,可对于业务相对复杂、高度定制的系统来说,Erupt 框架显得力不从心,更关键的一点,它的社区并不算特别活跃,毕竟是个小众框架。

不过,技术从来都是服务于业务的,如果你的业务与Erupt的气质相匹配,别犹豫,用它!



欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢:

9275a89c0895931d49f06c37cbaaa537.png

已在知识星球更新源码解析如下:

c9dba8c15ee7af3d56d9ddc335aee85d.jpeg

41a43d0350ee03984b5d56e017bfcad0.jpeg

17e7ba8e43c2b2ccee52a5aaf5471856.jpeg

ef625ea9171ebcea854098dea2b1e1df.jpeg

最近更新《芋道 SpringBoot 2.X 入门》系列,已经 101 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。

提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)
java 芋道 Spring Boot ruoyi-vue-pro 支付对接方法 支付宝/微信小程序/微信公众号对接 它由如下 3 部分组成:组件:对接微信、支付宝等支付,提供统一的PayClient 支付客户端 (opens new window)。后端模块:实现支付中心的后端功能,包括支付、退款等能力。基于 PayClient 支付客户端,对接微信、支付宝等支付渠道。对内提供统一支付 API 能力、统一退款 API 能力。③ 支付中心的前端,提供支付中心的管理后台,可进行支付渠道的配置、支付订单、退款单的查看等操作。Vue2 版本:@/views/pay目录Vue3 版本:@/views/pay目录。 阅读详情

相关推荐

erupt实现学生成绩管理系统,java spring boot项目 前后端一体 低代码 后端管理系统通用

使用erupt实现后端管理系统 源码。 前后端一体 重新配置数据库直接启动就可以 前端可直接配置生产代码 复制粘贴放入项目中即可 也可直接在前端进行接口配置开发 后端maven java项目 使用springboot+mybatis 框架 项目整体开发简洁简单。 示例地址:http://124.223.102.18:8400/#/build/table/CurriculumModel 用户名:test 密码:12345

芋道源码,使用官方命令打包后,在IDEA中运行一直报错!

ERROR][ERROR]

weixin_56360278的博客 4693

FPGA之道(22)VHDL基本程序框架

在介绍详细的VHDL语法之前,让我们先来了解一下VHDL代码的基本程序框架,这样可以让我们先对VHDL程序设计有一个整体的概念把握,进而在后续的VHDL语法学习中做到有的放矢。

Reborn Lee 8309

Java开发框架选型对比:ruoyi与yudao框架

web项目基础框架研究,含主流框架对比与使用分享

lili1158的博客 7万+

分子动力学模拟学习1-采用AmberTools21的MCPB.py构建金属蛋白的top文件

分子动力学模拟学习1-采用AmberTools21的MCPB.py构建金属蛋白的top文件

weixin_45011386的博客 3827

Converting Phase Noise to Random Jitter(Period)

推导了Phase Noise to Random Jitter(Period)的转换过程,解释了分频对Phase Noise & Spur(每2分频改善6dB)的影响,每N分频,TIE RJ(1𝜎)不变(之前已推导),而Period RJ(1𝜎)增加√N倍。

u010486560的博客 2040

干掉前端!3分钟纯Java注解搭个管理系统

本文介绍了一种仅用Java注解快速搭建管理系统的方案。通过SpringBoot结合特定注解库,开发者无需编写前端代码,3分钟内即可生成包含CRUD、表单、图表等功能的管理后台。方案核心包括:1)实体类注解自动生成数据库表和UI表单;2)仓库接口注解自动生成REST API;3)控制器注解自动生成管理界面。系统还支持权限控制、工作流、定时任务等企业级功能,并自动生成API文档和数据库控制台。虽然定制性有限,但该方案显著提升了开发效率,特别适合内部工具和简单后台系统的快速构建。

油墨香^-^的博客 439

Ollama运行DeepSeek大模型调优指南:GPU与CPU协同实现性能最大化

Ollama运行DeepSeek大模型调优指南

qq_32358423的博客 3999

干掉前端!3分钟纯 Java 搭个管理系统,我直接好家伙!最气人的是还真TM好用!...

关注公众号后台回复pay或mall获取实战项目资料+视频最近接触到个新项目,发现它用了一个比较有意思的框架,可以说实现了我刚入行时候的梦想,所以这里马不停蹄的和大家分享下。我刚开始工作接触...

公众号-老炮说Java 455

Qt 5.15.2静态编译避坑实录:MinGW 32位版从源码到Creator配置的全流程踩坑总结

本文详细介绍了Qt 5.15.2 MinGW 32位版本的静态编译全流程,包括环境准备、配置参数优化、编译过程监控及安装后配置。重点解决了静态编译中的常见问题,如参数顺序敏感、路径引号问题等,并提供了性能对比实测数据,帮助开发者高效完成静态编译。

weixin_26749245的博客 271

Ultralytics YOLO模块自定义与替换实战技巧

本文详细介绍了在Ultralytics YOLO框架中进行模块自定义与替换的实战技巧。通过从零开始添加全新模块(如注意力模块)到进阶替换现有模块(如增强版卷积),并涵盖模块注册、YAML配置、模型融合及ONNX导出等关键步骤,帮助开发者深度定制YOLO模型,以应对复杂检测任务与部署需求。

numpy6sculptor的博客 932

干掉前端!3分钟纯 Java 注解搭个管理系统

大家好,我是小富~ 最近接触到个新项目,发现它用了一个比较有意思的框架,可以说实现了我刚入行时候的梦想,所以这里马不停蹄的和大家分享下。 在我刚开始工作接触的项目都还没做前后端分离,经常需要后端来维护页面,有时候觉得自己好像天生不适合干前端,你要是让我研究研究后端的技术,看个中间件源码啊,分析分析什么框架底层原理啊,这都问题不大,偶尔搞一下JS也可以。你要是让我写个css样式,那简直要命了,一点也提不起兴趣,不知道有没有跟我一样的。 今天要介绍的框架直接不用写页面了,话不多说,下边咱们直奔主题 Erup.

nidongla的博客 107

用 SELECT FOR UPDATE 亲手制造典型数据库死锁——从 ABAP 视角揭秘 RDBMS 的锁争夺战

在日常 ABAP 开发中,多数人只在 ST22 里偶尔瞥见这行 dump,却对背后的原理知之甚少。本文借助社区前辈的经典实验,还原一个可复现的死锁现场,进一步讨论产生根因、检测手段与规避策略,并用真实业务案例串联起数据库、Open SQL 与 SAP NetWeaver 锁管理之间的逻辑链条。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 457

ERUPT低代码平台:10分钟快速搭建企业级后台管理系统

ERUPT是一款基于Java注解驱动的低代码数据平台(ORM as View),它通过简洁的注解配置即可快速构建企业级后台管理系统,无需编写前端代码,极大地提升了开发效率。无论是电商管理、CMS系统还是内部业务平台,ERUPT都能帮助开发者在10分钟内完成基础功能搭建,让团队专注于核心业务逻辑。 ## 🚀 为什么选择ERUPT低代码平台? 在传统开发模式中,构建一个后台管理系统需要前后端协同

gitblog_00692的博客 836

Alist/Openlist 的 WebDAV 老是连不上?别再乱试了,这才是标准答案!(1Panel如何使用Alist/Openlist作为备份账号)

😫服务器硬盘告急,想用 Alist/Openlist 的 WebDAV 备份却屡屡失败?别慌!本文带你揭秘正确的连接地址和权限配置,手把手教你搞定 1Panel 备份设置,让你的网盘秒变备份仓库!

XiaoqiangClub的博客 5593

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

别再手动写RBAC权限表了!用SaToken注解5分钟搞定SpringBoot3后台管理系统的菜单和按钮权限

本文详细介绍了如何利用SaToken注解在SpringBoot3项目中快速实现RBAC权限管理,通过`@SaCheckPermission`等注解简化菜单和按钮级别的权限控制。文章涵盖权限体系设计、SpringBoot3集成实战、前后端权限联动方案及高级功能实现,帮助开发者提升后台管理系统的开发效率。

weixin_28358083的博客 386

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

用@around注解10分钟搭建API监控原型

这种情况下,用Spring AOP的@Around注解快速搭建监控原型简直太合适了。测试时,从编码到能看到监控页面只用了8分钟。他们的在线编辑器响应很快,还自带Spring Boot环境,不用折腾本地配置。特别是写完代码点一下部署按钮,马上就能看到运行效果,对于快速验证想法特别有帮助。AOP的环绕通知可以在方法执行前后插入逻辑,特别适合这种需要统计耗时的场景。相比其他通知类型,它既能获取入参,又能拿到返回值,还能控制是否继续执行原方法。下次需要快速原型时,我还会考虑这种AOP+内存存储的方案。

JetRaven12的博客 832

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Erupt即开即用的后台管理系统【告别前端代码】

【零前端代码,几行Java注解,搞定后台管理系统】如果只是自己内部公司使用的话,大多数功能都可以满足,剩下的就是自己添砖加瓦了。我用这个主要是简单快捷,10分钟搭建一个简易的后台管理系统。

风归去. 842

用飞算JavaAI专业版30分钟搭建健身房管理系统——一位Java开发者的实测手记

本文分享了使用飞算JavaAI专业版开发健身房管理系统的体验。作者通过自然语言描述需求,AI在5分钟内生成完整项目骨架,包含会员管理、课程预约等模块,采用SpringBoot3+MyBatis-Plus+Vue3技术栈。实测显示AI能精准处理复杂业务逻辑(如课程冲突检测),生成高质量代码(含异常处理、事务注解等),并自动输出接口文档和测试用例。相比传统AI工具,飞算JavaAI具有无限Tokens、生成速度快30%等优势,且9.9元/月的价格极具性价比。整体开发效率提升20%,大幅减少调试时间。

记录学习路上的一些拙见 4万+
上一篇: Mybatis-Plus 使用技巧与隐患
下一篇: 离开华为加入小公司,我后悔了!
公众号-芋道源码
博客等级 码龄10年 1634粉丝 377原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值