Erupt一個通用后臺管理框架,據(jù)說有 超低代碼量 、 零前端代碼 、零 CURD操作 、無需建表 ,純Java注解開發(fā) 等特色,號稱三分鐘就可以搭建一個完整的后臺管理系統(tǒng)。
額~ 聽著好像還挺流批的,到底是不是有這么魔幻,咱們一起用起來感受下。
首先來搭建一下環(huán)境,目前Erupt支持Java版本1.8.0及以上、Spring Boot版本2.0及其以上。
搭建easy
pom.xml引入必要的jar包
org.springframework.boot spring-boot-starter mysql mysql-connector-java xyz.erupt erupt-upms 1.6.7 xyz.erupt erupt-security 1.6.7 xyz.erupt erupt-web 1.6.7 org.springframework.boot spring-boot-starter-tomcat compile
application.yml 文件只要簡單配置數(shù)據(jù)源就好,提前準備個數(shù)據(jù)庫,說到數(shù)據(jù)庫這里我說個小插曲。
我之前在Github 提交案例代碼的時候,由于沒太注意沒屏蔽敏感信息,導致云數(shù)據(jù)庫賬號泄露了,最近我發(fā)現(xiàn)已經(jīng)有小伙伴在數(shù)據(jù)庫上跑項目了,仔細看了看里邊的數(shù)據(jù)結構,發(fā)現(xiàn)像是個畢設項目。
本身這個庫就是我跑demo案例的一個測試庫,為的就是讓小伙伴能把更多時間放在研究案例的技術點上,減少搭建環(huán)境這種沒技術含量的瑣碎事。
發(fā)現(xiàn)歸發(fā)現(xiàn),這里我沒改密碼,也沒刪他們的庫,如果你要用就繼續(xù)用著,但玩歸玩,鬧歸鬧,你不能亂動不是你的數(shù)據(jù) !影響其他人學習就不好了。
spring: datasource: url:jdbc//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:[email protected] 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
說了點題外話,我們繼續(xù)搞起~
其實到這Erupt的環(huán)境就搭建完了,額~ ,這就完了?
咱們什么也沒干,項目是個空殼子,一行代碼也沒寫,好像連個表也沒建啊!
別著急咱們先啟動下項目,看到控制臺打印出很多建表語句和插入語句,這是因為Erupt框架底層應用JPA持久化,預置創(chuàng)建了一些系統(tǒng)表和數(shù)據(jù)。
注意 :Erupt預置表只會隨項目第一次啟動構建一次,如果想重新創(chuàng)建,需刪除.Erupt文件(一般在項目的工作空間內(nèi)),獲取文件位置方式
System.getProperty("user.dir")
再看數(shù)據(jù)庫里創(chuàng)建了16張系統(tǒng)表,其中e_upms_user表是用戶表,默認只有一個管理員賬號,用戶名、密碼都是erupt。
緊接著看一下是個什么效果,竟然有個完整的登錄頁面。
用上邊的用戶名、密碼直接登錄,erupt已經(jīng)預先實現(xiàn)了完整的權限控等功能,而到這我們幾乎是沒寫過什么代碼的,都是框架封裝好了的,菜單類數(shù)據(jù)全部從數(shù)據(jù)庫動態(tài)獲取,一個基礎的后臺管理系統(tǒng)就搭建完了,有點哇塞。
有趣的頁面
那么問題來了?想要自定義頁面怎么辦?
開篇我們就說過erupt是零前端代碼,全部基于Java注解開發(fā)的,接下來用Java注解寫個簡單頁面體驗下。
erupt`有兩個核心注解`@Erupt`,`@EruptField
@Erupt注解修飾類,代表定義一個頁面
@EruptField注解修飾字段,代表頁面上顯示的字段名
@Power注解控制是否操作按鈕,增、刪、改、查、導入、導出等
@Search注解表示字段為搜索條件
@Table注解表示頁面取數(shù)據(jù)對應的表,如果不設置,頁面第一次初始化的時候,會根據(jù)類字段值自動創(chuàng)建一張和類名一致的表名。
“
注解類型比較多,不一一列舉了,更多的自己到官網(wǎng)瞅: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") publicclassStudentextendsBaseModel{ @EruptField( views=@View(title="學生姓名"), edit=@Edit(title="學生姓名",notNull=true,search=@Search(vague=true)) ) privateStringstudentName; @EruptField( views=@View(title="所屬班級"), edit=@Edit(title="所屬班級",notNull=true) ) privateStringstudentClass; @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="考核狀態(tài)"), edit=@Edit(title="考核狀態(tài)",notNull=true,boolType=@BoolType(trueText="通過",falseText="掛科"),search=@Search) ) privateBooleanstatus; }
但此時新創(chuàng)建的頁面不會顯示出來,還需要我們手動做一個映射關系,在菜單維護中自定義個菜單,類型值 一定要為新建的 類名 Student。
保存刷新后會看到我們的新頁面出現(xiàn)了,而且頁面的功能很完整,基礎操作、查詢、導入、導出功能都自動實現(xiàn)了。
頁面新增一個學生信息,對應的Student表也多了條記錄,而這個持久化的過程完全由框架來做。
盡管Erupt 框架對前后端代碼做了深度封裝,但它提供了豐富靈活的自定義接口,來滿足我們的個性化需求。
比如我們在錄入新學生信息時,希望屏蔽名字為張三的同學,可以對頁面按鈕功能做代理dataProxy,實現(xiàn)自定義的邏輯,對哪個按鈕代理就實現(xiàn)對應方法即可,如beforeAdd、afterAdd是對新增按鈕的代理。
@Getter @Setter @Erupt(name="學生表",dataProxy={StudentDataProxy.class}, power=@Power(importable=true,export=true) ) @Entity //@Table(name="t_student") publicclassStudentextendsBaseModel{ } publicclassStudentDataProxyimplementsDataProxy{ @Override publicvoidbeforeAdd(Studentstudent){ //后臺字段校驗 if("張三".equals(student.getStudentName())){ thrownewEruptApiErrorTip("名稱禁止為張三!"); } } @Override publicvoidafterAdd(Studentstudent){ } @Override publicvoidafterUpdate(Studentstudent){ } @Override publicvoidafterDelete(Studentstudent){ } }
當我們在頁面錄入名字為張三的同學時,成功屏蔽。其他類似的功能還有很多,這里就不一一舉例了,看文檔看文檔~
如果我們想要按傳統(tǒng)的方式開發(fā)接口,不用擔心會和Erupt的頁面生成規(guī)則有沖突,絲毫不會受影響。而且Erupt內(nèi)部集成了JPA,提供了現(xiàn)成的dao接口,只要調(diào)用對應API即可上手開發(fā)。
如果你不想手寫Java代碼也沒關系,Erupt還提供了代碼生成器,自定義Java類名和字段名,可以生成代碼,直接copy就行了。
說到這我只介紹了Erupt一丟丟的基礎特性,主要是想讓小伙伴知道有這么個敏捷利器。
不僅如此它還支持豐富的數(shù)據(jù)類型,內(nèi)置了像定時任務管理、多表聯(lián)合查詢、前后端分離部署、接口權限、操作記錄、多數(shù)據(jù)源、郵件系統(tǒng)、黑白名單等等很多實用功能,都直接調(diào)用API就可以用。
說在后邊
Erupt 框架的優(yōu)點是顯而易見的,快捷、高效、上手容易,對新手相當?shù)挠押茫趯嶋H生產(chǎn)環(huán)境中我只是用它來做一些配置字典類的數(shù)據(jù)管理。
因為它的深度封裝雖然讓開發(fā)變的簡單高效,可對于業(yè)務相對復雜、高度定制的系統(tǒng)來說,Erupt 框架顯得力不從心,更關鍵的一點,它的社區(qū)并不算特別活躍,畢竟是個小眾框架。
不過,技術從來都是服務于業(yè)務的,如果你的業(yè)務與Erupt的氣質(zhì)相匹配,別猶豫,用它!
審核編輯:劉清
-
JAVA語言
+關注
關注
0文章
138瀏覽量
20459 -
代碼生成器
+關注
關注
0文章
25瀏覽量
9255 -
API接口
+關注
關注
1文章
85瀏覽量
10730
原文標題:干掉前端!3分鐘純 Java 注解搭個管理系統(tǒng),我直接好家伙
文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
如何通過注解來優(yōu)化我們的Java代碼
java&Android純小白求救
詳細介紹了Java泛型、注解、并發(fā)編程
HarmonyOS注解的使用方法分享
分析java注解基本概念
基于Java EE的車輛管理系統(tǒng)設計

注解定義Bean及開發(fā)
Springboot常用注解合集

JAVA中注解是怎么做到的(上)
JAVA中注解是怎么做到的(下)

評論