当前位置: 首页 > 科技观察

告别前端!3分钟纯Java注解搭建管理系统,我是直接好人

时间:2023-03-15 15:55:23 科技观察

转载本文请联系程序员内店师公众号。大家好,我是小付~最近接触了一个新项目,发现用了一个比较有意思的框架,可以说是圆了我初入行的梦想,所以分享给大家这里马不停蹄。刚开始做的项目还没有前后端分离。我经常需要后端来维护页面。有时候觉得自己天生不适合做前端。如果让我研究后端的技术,就看中间件的源码。,分析分析框架的底层原理。这个问题不大,偶尔做一下JS也没问题。你要是让我写一个css样式,那就惨了,我一点兴趣都没有。不知道有没有和我一样的。今天要介绍的框架不需要直接写页面。直接进入正题Erupt,一个通用的后台管理框架。号称拥有超低代码量、零前端代码、零CURD操作、无需建表、纯Java注解开发等特性,号称三分钟即可搭建一套完整的后台管理系统。呃~好像还挺流行的。有这么神奇吗?让我们一起使用感受一下。首先,让我们搭建环境。目前Erupt支持Java1.8.0及以上版本,SpringBoot2.0及以上版本。搭建easypom.xml引入必须的jar包org.springframework.bootspring-boot-startermysqlmysql-connector-javaxyz.erupterupt-upms1.6.7xyz.erupterupt-security1.6.7xyz.erupterupt-web1.6.7org.springframework.bootspring-boot-starter-tomcat编译application.yml文件只需要简单配置数据源,提前准备好数据库即可。说到数据库,再说一点插曲我在Github上提交案例代码时(https://github.com/chengxy-nds/Springboot-Notebook),云数据库账号被泄露,因为我没有足够注意屏蔽敏感信息。小伙伴把项目跑到数据库上,仔细看了里面的数据结构,发现好像是final项目。这个库本身就是我的demo案例的测试库,目的是为了让小伙伴们把更多的时间花在研究案例的技术点上,减少没有技术含量的搭建环境等琐碎的事情。如果你找到它,你就会找到它。我这里没有改密码,也没有删除他们的库。如果你想使用它,你可以继续使用它。好吧。spring:datasource:url:jdbc:mysql://47.93.6.5:3306/erupt2?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghaiusername:rootpassword:123456jpa:show-sql:truegenerate-ddl:truedatabase-platform:org。hibernate.dialect.MySQL5InnoDBDialectdatabase:mysqlprofiles:active:devmail:username:xxxx@qq.compassword:xxxxxxxhost:smtp.qq.comproperties:mail.smtp.ssl.auth:truemail.smtp.ssl.enable:truemail.smtp.ssl。required:trueserver:port:8888说了些题外话,我们继续开始吧~其实Erupt的环境搭建好了,呃~,这就结束了?我们什么都没做,项目就是个空壳,一行代码都没有写,好像连个表都没建好!别着急,我们先启动项目,看到控制台打印了很多建表语句和插入语句。这是因为Erupt框架底层使用了JPA持久化,有些系统是默认创建的。表和数据。注意:Erupt预设表只会在项目第一次启动时构建一次。如果要重新创建,需要删除.erupt文件(一般在项目的工作空间),通过System.getProperty("user.dir")获取文件位置,查看创建的16个系统表数据库,其中e_upms_user表为用户表。默认只有一个管理员账号,用户名和密码都是erupt。然后我们访问http://127.0.0.1:8888/看看是什么效果,有一个完整的登录页面。使用上面的用户名和密码直接登录。erupt已经预先实现了完整的权限控制等功能,至此我们几乎没有写任何代码。它们都是由框架封装的。所有菜单数据都是从数据库中动态检索的。搞定了,基本的后台管理系统搭建起来了,有点哇。有趣的页面那么问题来了?如果要自定义页面怎么办?我们一开始就说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="StudentTable",power=@Power(importable=true,export=true))@Entity//@Table(name="t_student")publicclassStudenttextendsBaseModel{@EruptField(views=@View(title="学生姓名"),edit=@Edit(title="学生姓名",notNull=true,search=@Search(vague=true)))privateStringstudentName;@EruptField(views=@View(title="属于班级"),edit=@Edit(title="属于班级",notNull=真))私有字符串学生类;@EruptField(views=@View(title="学生年龄"),edit=@Edit(title="学生年龄",notNull=true))privateStringstudentAge;@Lob@EruptField(views=@View(title="学生性别)"),edit=@Edit(title="学生性别",notNull=true))privateStringstudentSex;@EruptField(views=@View(title="评估状态"),edit=@Edit(title="评估状态",notNull=true,boolType=@BoolType(trueText="Pass",falseText="Pause"),search=@Search))privateBooleanstatus;}但是此时新建的页面不会显示出来,需要我们做手动映射关系,在菜单维护中自定义一个菜单,type值必须保存为新建的类名Student,刷新后会看到我们的新页面出现,页面功能齐全,基本操作,查询,导入,导出功能自动实现了。页面中新增一条学生信息,对应的Student表也多了一条记录,而这个持久化过程完全由框架完成。Erupt框架虽然对前后端代码进行了深度封装,但提供了丰富灵活的自定义接口来满足我们的个性化需求。比如我们在录入新生信息的时候,想要拉黑这个叫张三的学生。我们可以作为页面按钮功能的代理dataProxy,实现自定义逻辑。只需要为按钮代理实现相应的方法即可,比如beforeAdd和afterAdd都对按钮添加了一个delegate。@Getter@Setter@Erupt(name="StudentTable",dataProxy={StudentDataProxy.class},power=@Power(importable=true,export=true))@Entity//@Table(name="t_student")publicclassStudenttextendsBaseModel{}publicclassStudentDataProxyimplementsDataProxy{@OverridepublicvoidbeforeAdd(Studentstudent){//后台字段校验if("张三".equals(student.getStudentName())){thrownewEruptApiErrorTip("名字禁止为张三!");}}@OverridepublicvoidafterAdd(Studentstudent){}@OverridepublicvoidafterUpdate(Studentstudent){}@OverridepublicvoidafterDelete(Studentstudent){}}当我们在页面输入一个叫张三的学生时,成功屏蔽了。类似的功能还有很多,这里就不一一举例了,看文档就好了~如果我们想用传统方式开发界面,不用担心和Erupt的页面生成规则冲突,完全不会受到影响。而且,Erupt内部集成了JPA,提供了现成的dao接口,只要调用相应的API,就可以开始开发了。如果您不想手写Java代码也没关系。Erupt还提供了代码生成器,可以自定义Java类名和字段名,生成代码即可,直接复制即可。说到这里,我只介绍了Erupt的基本特性,主要是想让小伙伴们知道有这么一把敏捷利器。不仅如此,还支持丰富的数据类型,内置定时任务管理、多表联合查询、前后端分离部署、接口权限、操作记录、多数据源、邮件等诸多实用功能系统、黑白名单等,都直接调用API即可使用。据说Erupt框架优点明显,快速,高效,易用,对新手相当友好,但是在实际生产环境中,我只是用它来做一些配置字典的数据管理。因为它的深度封装让开发变得简单高效,但是对于相对复杂的业务和高度定制化的系统,Erupt框架就显得力不从心了。更重要的是,它的社区并不是特别活跃,毕竟是小众框架。但是,技术始终为业务服务。如果您的业务符合Erupt的气质,请毫不犹豫地使用它!