Erupt一個(gè)通用后臺(tái)管理框架,據(jù)說(shuō)有 超低代碼量 、 零前端代碼 、零 CURD操作 、無(wú)需建表 ,純Java注解開(kāi)發(fā) 等特色,號(hào)稱(chēng)三分鐘就可以搭建一個(gè)完整的后臺(tái)管理系統(tǒng)。
額~ 聽(tīng)著好像還挺流批的,到底是不是有這么魔幻,咱們一起用起來(lái)感受下。
首先來(lái)搭建一下環(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 文件只要簡(jiǎn)單配置數(shù)據(jù)源就好,提前準(zhǔn)備個(gè)數(shù)據(jù)庫(kù),說(shuō)到數(shù)據(jù)庫(kù)這里我說(shuō)個(gè)小插曲。
我之前在Github 提交案例代碼的時(shí)候,由于沒(méi)太注意沒(méi)屏蔽敏感信息,導(dǎo)致云數(shù)據(jù)庫(kù)賬號(hào)泄露了,最近我發(fā)現(xiàn)已經(jīng)有小伙伴在數(shù)據(jù)庫(kù)上跑項(xiàng)目了,仔細(xì)看了看里邊的數(shù)據(jù)結(jié)構(gòu),發(fā)現(xiàn)像是個(gè)畢設(shè)項(xiàng)目。

本身這個(gè)庫(kù)就是我跑demo案例的一個(gè)測(cè)試庫(kù),為的就是讓小伙伴能把更多時(shí)間放在研究案例的技術(shù)點(diǎn)上,減少搭建環(huán)境這種沒(méi)技術(shù)含量的瑣碎事。
發(fā)現(xiàn)歸發(fā)現(xiàn),這里我沒(méi)改密碼,也沒(méi)刪他們的庫(kù),如果你要用就繼續(xù)用著,但玩歸玩,鬧歸鬧,你不能亂動(dòng)不是你的數(shù)據(jù) !影響其他人學(xué)習(xí)就不好了。
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: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
說(shuō)了點(diǎn)題外話,我們繼續(xù)搞起~
其實(shí)到這Erupt的環(huán)境就搭建完了,額~ ,這就完了?
咱們什么也沒(méi)干,項(xiàng)目是個(gè)空殼子,一行代碼也沒(méi)寫(xiě),好像連個(gè)表也沒(méi)建??!

別著急咱們先啟動(dòng)下項(xiàng)目,看到控制臺(tái)打印出很多建表語(yǔ)句和插入語(yǔ)句,這是因?yàn)镋rupt框架底層應(yīng)用JPA持久化,預(yù)置創(chuàng)建了一些系統(tǒng)表和數(shù)據(jù)。

注意 :Erupt預(yù)置表只會(huì)隨項(xiàng)目第一次啟動(dòng)構(gòu)建一次,如果想重新創(chuàng)建,需刪除.Erupt文件(一般在項(xiàng)目的工作空間內(nèi)),獲取文件位置方式
System.getProperty("user.dir")
再看數(shù)據(jù)庫(kù)里創(chuàng)建了16張系統(tǒng)表,其中e_upms_user表是用戶表,默認(rèn)只有一個(gè)管理員賬號(hào),用戶名、密碼都是erupt。

緊接著看一下是個(gè)什么效果,竟然有個(gè)完整的登錄頁(yè)面。

用上邊的用戶名、密碼直接登錄,erupt已經(jīng)預(yù)先實(shí)現(xiàn)了完整的權(quán)限控等功能,而到這我們幾乎是沒(méi)寫(xiě)過(guò)什么代碼的,都是框架封裝好了的,菜單類(lèi)數(shù)據(jù)全部從數(shù)據(jù)庫(kù)動(dòng)態(tài)獲取,一個(gè)基礎(chǔ)的后臺(tái)管理系統(tǒng)就搭建完了,有點(diǎn)哇塞。

有趣的頁(yè)面
那么問(wèn)題來(lái)了?想要自定義頁(yè)面怎么辦?
開(kāi)篇我們就說(shuō)過(guò)erupt是零前端代碼,全部基于Java注解開(kāi)發(fā)的,接下來(lái)用Java注解寫(xiě)個(gè)簡(jiǎn)單頁(yè)面體驗(yàn)下。
erupt`有兩個(gè)核心注解`@Erupt`,`@EruptField
@Erupt注解修飾類(lèi),代表定義一個(gè)頁(yè)面
@EruptField注解修飾字段,代表頁(yè)面上顯示的字段名
@Power注解控制是否操作按鈕,增、刪、改、查、導(dǎo)入、導(dǎo)出等
@Search注解表示字段為搜索條件
@Table注解表示頁(yè)面取數(shù)據(jù)對(duì)應(yīng)的表,如果不設(shè)置,頁(yè)面第一次初始化的時(shí)候,會(huì)根據(jù)類(lèi)字段值自動(dòng)創(chuàng)建一張和類(lèi)名一致的表名。
“
注解類(lèi)型比較多,不一一列舉了,更多的自己到官網(wǎng)瞅:https://www.erupt.xyz
下邊我們定義一個(gè)Student類(lèi),加上@Erupt,@EruptField注解,這樣頁(yè)面和元素就算寫(xiě)完了,是不是有點(diǎn)顛覆認(rèn)知。
/* *@Erupt注解修飾在類(lèi)上,@EruptField注解修飾在字段上 *其他注解均為Jpa注解 */ @Getter @Setter @Erupt(name="學(xué)生表", power=@Power(importable=true,export=true) ) @Entity //@Table(name="t_student") publicclassStudentextendsBaseModel{ @EruptField( views=@View(title="學(xué)生姓名"), edit=@Edit(title="學(xué)生姓名",notNull=true,search=@Search(vague=true)) ) privateStringstudentName; @EruptField( views=@View(title="所屬班級(jí)"), edit=@Edit(title="所屬班級(jí)",notNull=true) ) privateStringstudentClass; @EruptField( views=@View(title="學(xué)生年齡"), edit=@Edit(title="學(xué)生年齡",notNull=true) ) privateStringstudentAge; @Lob @EruptField( views=@View(title="學(xué)生性別"), edit=@Edit(title="學(xué)生性別",notNull=true) ) privateStringstudentSex; @EruptField( views=@View(title="考核狀態(tài)"), edit=@Edit(title="考核狀態(tài)",notNull=true,boolType=@BoolType(trueText="通過(guò)",falseText="掛科"),search=@Search) ) privateBooleanstatus; }
但此時(shí)新創(chuàng)建的頁(yè)面不會(huì)顯示出來(lái),還需要我們手動(dòng)做一個(gè)映射關(guān)系,在菜單維護(hù)中自定義個(gè)菜單,類(lèi)型值 一定要為新建的 類(lèi)名 Student。

保存刷新后會(huì)看到我們的新頁(yè)面出現(xiàn)了,而且頁(yè)面的功能很完整,基礎(chǔ)操作、查詢(xún)、導(dǎo)入、導(dǎo)出功能都自動(dòng)實(shí)現(xiàn)了。

頁(yè)面新增一個(gè)學(xué)生信息,對(duì)應(yīng)的Student表也多了條記錄,而這個(gè)持久化的過(guò)程完全由框架來(lái)做。

盡管Erupt 框架對(duì)前后端代碼做了深度封裝,但它提供了豐富靈活的自定義接口,來(lái)滿足我們的個(gè)性化需求。
比如我們?cè)阡浫胄聦W(xué)生信息時(shí),希望屏蔽名字為張三的同學(xué),可以對(duì)頁(yè)面按鈕功能做代理dataProxy,實(shí)現(xiàn)自定義的邏輯,對(duì)哪個(gè)按鈕代理就實(shí)現(xiàn)對(duì)應(yīng)方法即可,如beforeAdd、afterAdd是對(duì)新增按鈕的代理。
@Getter
@Setter
@Erupt(name="學(xué)生表",dataProxy={StudentDataProxy.class},
power=@Power(importable=true,export=true)
)
@Entity
//@Table(name="t_student")
publicclassStudentextendsBaseModel{
}
publicclassStudentDataProxyimplementsDataProxy{
@Override
publicvoidbeforeAdd(Studentstudent){
//后臺(tái)字段校驗(yàn)
if("張三".equals(student.getStudentName())){
thrownewEruptApiErrorTip("名稱(chēng)禁止為張三!");
}
}
@Override
publicvoidafterAdd(Studentstudent){
}
@Override
publicvoidafterUpdate(Studentstudent){
}
@Override
publicvoidafterDelete(Studentstudent){
}
}
當(dāng)我們?cè)陧?yè)面錄入名字為張三的同學(xué)時(shí),成功屏蔽。其他類(lèi)似的功能還有很多,這里就不一一舉例了,看文檔看文檔~

如果我們想要按傳統(tǒng)的方式開(kāi)發(fā)接口,不用擔(dān)心會(huì)和Erupt的頁(yè)面生成規(guī)則有沖突,絲毫不會(huì)受影響。而且Erupt內(nèi)部集成了JPA,提供了現(xiàn)成的dao接口,只要調(diào)用對(duì)應(yīng)API即可上手開(kāi)發(fā)。

如果你不想手寫(xiě)Java代碼也沒(méi)關(guān)系,Erupt還提供了代碼生成器,自定義Java類(lèi)名和字段名,可以生成代碼,直接copy就行了。


說(shuō)到這我只介紹了Erupt一丟丟的基礎(chǔ)特性,主要是想讓小伙伴知道有這么個(gè)敏捷利器。
不僅如此它還支持豐富的數(shù)據(jù)類(lèi)型,內(nèi)置了像定時(shí)任務(wù)管理、多表聯(lián)合查詢(xún)、前后端分離部署、接口權(quán)限、操作記錄、多數(shù)據(jù)源、郵件系統(tǒng)、黑白名單等等很多實(shí)用功能,都直接調(diào)用API就可以用。

說(shuō)在后邊
Erupt 框架的優(yōu)點(diǎn)是顯而易見(jiàn)的,快捷、高效、上手容易,對(duì)新手相當(dāng)?shù)挠押茫趯?shí)際生產(chǎn)環(huán)境中我只是用它來(lái)做一些配置字典類(lèi)的數(shù)據(jù)管理。
因?yàn)樗纳疃确庋b雖然讓開(kāi)發(fā)變的簡(jiǎn)單高效,可對(duì)于業(yè)務(wù)相對(duì)復(fù)雜、高度定制的系統(tǒng)來(lái)說(shuō),Erupt 框架顯得力不從心,更關(guān)鍵的一點(diǎn),它的社區(qū)并不算特別活躍,畢竟是個(gè)小眾框架。
不過(guò),技術(shù)從來(lái)都是服務(wù)于業(yè)務(wù)的,如果你的業(yè)務(wù)與Erupt的氣質(zhì)相匹配,別猶豫,用它!
審核編輯:劉清
-
JAVA語(yǔ)言
+關(guān)注
關(guān)注
0文章
138瀏覽量
21434 -
代碼生成器
+關(guān)注
關(guān)注
0文章
25瀏覽量
9531 -
API接口
+關(guān)注
關(guān)注
1文章
112瀏覽量
11209
原文標(biāo)題:干掉前端!3分鐘純 Java 注解搭個(gè)管理系統(tǒng),我直接好家伙
文章出處:【微信號(hào):芋道源碼,微信公眾號(hào):芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
如何通過(guò)注解來(lái)優(yōu)化我們的Java代碼
java&Android純小白求救
詳細(xì)介紹了Java泛型、注解、并發(fā)編程
怎么實(shí)現(xiàn)基于java的土地檔案管理系統(tǒng)設(shè)計(jì)?
HarmonyOS注解的使用方法分享
分析java注解基本概念
基于Java EE的車(chē)輛管理系統(tǒng)設(shè)計(jì)
注解定義Bean及開(kāi)發(fā)
Springboot常用注解合集
JAVA中注解是怎么做到的(上)
JAVA中注解是怎么做到的(下)
3分鐘了解ePort關(guān)鍵設(shè)計(jì)技巧
3分鐘純Java注解搭個(gè)管理系統(tǒng)
評(píng)論