日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
干掉前端!3分鐘純Java注解搭個管理系統(tǒng),我直接好家伙

 本文轉載自微信公眾號「程序員內點事」,作者程序員內點事。轉載本文請聯(lián)系程序員內點事公眾號。

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設,金平企業(yè)網(wǎng)站建設,金平品牌網(wǎng)站建設,網(wǎng)站定制,金平網(wǎng)站建設報價,網(wǎng)絡營銷,網(wǎng)絡優(yōu)化,金平網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

大家好,我是小富~

最近接觸到個新項目,發(fā)現(xiàn)它用了一個比較有意思的框架,可以說實現(xiàn)了我剛入行時候的夢想,所以這里馬不停蹄的和大家分享下。

我剛開始工作接觸的項目都還沒做前后端分離,經常需要后端來維護頁面,有時候覺得自己好像天生不適合干前端,你要是讓我研究研究后端的技術,看個中間件源碼啊,分析分析什么框架底層原理啊,這都問題不大,偶爾搞一下JS也可以。你要是讓我寫個css樣式,那簡直要命了,一點也提不起興趣,不知道有沒有跟我一樣的。

今天要介紹的框架直接不用寫頁面了,話不多說,下邊咱們直奔主題

Erupt一個通用后臺管理框架,據(jù)說有 超低代碼量、 零前端代碼、零 CURD操作、無需建表,純Java注解開發(fā)等特色,號稱三分鐘就可以搭建一個完整的后臺管理系統(tǒng)。

額~ 聽著好像還挺流批的,到底是不是有這么魔幻,咱們一起用起來感受下。

首先來搭建一下環(huán)境,目前Erupt支持Java版本1.8.0及以上、Spring Boot版本2.0及其以上。

搭建easy

pom.xml引入必要的jar包

 
 
 
 
  1.     
  2.         org.springframework.boot
  3.         spring-boot-starter
  4.     
  5.     
  6.         mysql
  7.         mysql-connector-java
  8.     
  9.     
  10.     
  11.         xyz.erupt
  12.         erupt-upms
  13.         1.6.7
  14.     
  15.     
  16.     
  17.         xyz.erupt
  18.         erupt-security
  19.         1.6.7
  20.     
  21.     
  22.     
  23.         xyz.erupt
  24.         erupt-web
  25.         1.6.7
  26.     
  27.     
  28.         org.springframework.boot
  29.         spring-boot-starter-tomcat
  30.         compile
  31.     

application.yml 文件只要簡單配置數(shù)據(jù)源就好,提前準備個數(shù)據(jù)庫,說到數(shù)據(jù)庫這里我說個小插曲。

我之前在Github 提交案例代碼的時候(https://github.com/chengxy-nds/Springboot-Notebook ),由于沒太注意沒屏蔽敏感信息,導致云數(shù)據(jù)庫賬號泄露了,最近我發(fā)現(xiàn)已經有小伙伴在數(shù)據(jù)庫上跑項目了,仔細看了看里邊的數(shù)據(jù)結構,發(fā)現(xiàn)像是個畢設項目。

本身這個庫就是我跑demo案例的一個測試庫,為的就是讓小伙伴能把更多時間放在研究案例的技術點上,減少搭建環(huán)境這種沒技術含量的瑣碎事。

發(fā)現(xiàn)歸發(fā)現(xiàn),這里我沒改密碼,也沒刪他們的庫,如果你要用就繼續(xù)用著,但玩歸玩,鬧歸鬧,你不能亂動不是你的數(shù)據(jù)!影響其他人學習就不好了。

 
 
 
 
  1. spring:
  2.   datasource:
  3.     url: jdbc:mysql://47.93.6.5:3306/erupt2?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
  4.     username: root
  5.     password: 123456
  6.   jpa:
  7.     show-sql: true
  8.     generate-ddl: true
  9.     database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
  10.     database: mysql
  11.   profiles:
  12.     active: dev
  13.   mail:
  14.     username: xxxx@qq.com
  15.     password: xxxxxxx
  16.     host: smtp.qq.com
  17.     properties:
  18.       mail.smtp.ssl.auth: true
  19.       mail.smtp.ssl.enable: true
  20.       mail.smtp.ssl.required: true
  21. server:
  22.   port: 8888

說了點題外話,我們繼續(xù)搞起~

其實到這Erupt的環(huán)境就搭建完了,額~ ,這就完了?

咱們什么也沒干,項目是個空殼子,一行代碼也沒寫,好像連個表也沒建啊!

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

注意:Erupt預置表只會隨項目第一次啟動構建一次,如果想重新創(chuàng)建,需刪除.Erupt文件(一般在項目的工作空間內),獲取文件位置方式

 
 
 
 
  1. System.getProperty("user.dir")

再看數(shù)據(jù)庫里創(chuàng)建了16張系統(tǒng)表,其中e_upms_user表是用戶表,默認只有一個管理員賬號,用戶名、密碼都是erupt。

緊接著我們訪問http://127.0.0.1:8888/,看一下是個什么效果,竟然有個完整的登錄頁面。

用上邊的用戶名、密碼直接登錄,erupt已經預先實現(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注解,這樣頁面和元素就算寫完了,是不是有點顛覆認知。

 
 
 
 
  1. /*
  2.  *  @Erupt注解修飾在類上,@EruptField注解修飾在字段上
  3.  *  其他注解均為Jpa注解
  4.  */
  5. @Getter
  6. @Setter
  7. @Erupt(name = "學生表",
  8.         power = @Power(importable = true, export = true)
  9. )
  10. @Entity
  11. //@Table(name = "t_student")
  12. public class Student extends BaseModel {
  13.     @EruptField(
  14.             views = @View(title = "學生姓名"),
  15.             edit = @Edit(title = "學生姓名", notNull = true, search = @Search(vague = true))
  16.     )
  17.     private String studentName;
  18.     @EruptField(
  19.             views = @View(title = "所屬班級"),
  20.             edit = @Edit(title = "所屬班級", notNull = true)
  21.     )
  22.     private String studentClass;
  23.     @EruptField(
  24.             views = @View(title = "學生年齡"),
  25.             edit = @Edit(title = "學生年齡", notNull = true)
  26.     )
  27.     private String studentAge;
  28.     @Lob
  29.     @EruptField(
  30.             views = @View(title = "學生性別"),
  31.             edit = @Edit(title = "學生性別", notNull = true)
  32.     )
  33.     private String studentSex;
  34.     @EruptField(
  35.             views = @View(title = "考核狀態(tài)"),
  36.             edit = @Edit(title = "考核狀態(tài)", notNull = true, boolType = @BoolType(trueText = "通過", falseText = "掛科"), search = @Search)
  37.     )
  38.     private Boolean status;
  39. }

但此時新創(chuàng)建的頁面不會顯示出來,還需要我們手動做一個映射關系,在菜單維護中自定義個菜單,類型值一定要為新建的 類名 Student。

保存刷新后會看到我們的新頁面出現(xiàn)了,而且頁面的功能很完整,基礎操作、查詢、導入、導出功能都自動實現(xiàn)了。

頁面新增一個學生信息,對應的Student表也多了條記錄,而這個持久化的過程完全由框架來做。

盡管Erupt 框架對前后端代碼做了深度封裝,但它提供了豐富靈活的自定義接口,來滿足我們的個性化需求。

比如我們在錄入新學生信息時,希望屏蔽名字為張三的同學,可以對頁面按鈕功能做代理dataProxy,實現(xiàn)自定義的邏輯,對哪個按鈕代理就實現(xiàn)對應方法即可,如beforeAdd、afterAdd是對新增按鈕的代理。

 
 
 
 
  1. @Getter
  2. @Setter
  3. @Erupt(name = "學生表",dataProxy = {StudentDataProxy.class},
  4.         power = @Power(importable = true, export = true)
  5. )
  6. @Entity
  7. //@Table(name = "t_student")
  8. public class Student extends BaseModel {
  9. }
  10. public class StudentDataProxy implements DataProxy {
  11.     @Override
  12.     public void beforeAdd(Student student) {
  13.         //后臺字段校驗
  14.         if ("張三".equals(student.getStudentName())) {
  15.             throw new EruptApiErrorTip("名稱禁止為張三!");
  16.         }
  17.     }
  18.     @Override
  19.     public void afterAdd(Student student) {
  20.     }
  21.     @Override
  22.     public void afterUpdate(Student student) {
  23.     }
  24.     @Override
  25.     public void afterDelete(Student student) {
  26.     }
  27.  }

當我們在頁面錄入名字為張三的同學時,成功屏蔽。其他類似的功能還有很多,這里就不一一舉例了,看文檔看文檔~

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

如果你不想手寫Java代碼也沒關系,Erupt還提供了代碼生成器,自定義Java類名和字段名,可以生成代碼,直接copy就行了。

說到這我只介紹了Erupt一丟丟的基礎特性,主要是想讓小伙伴知道有這么個敏捷利器。

不僅如此它還支持豐富的數(shù)據(jù)類型,內置了像定時任務管理、多表聯(lián)合查詢、前后端分離部署、接口權限、操作記錄、多數(shù)據(jù)源、郵件系統(tǒng)、黑白名單等等很多實用功能,都直接調用API就可以用。

說在后邊

Erupt 框架的優(yōu)點是顯而易見的,快捷、高效、上手容易,對新手相當?shù)挠押?,但在實際生產環(huán)境中我只是用它來做一些配置字典類的數(shù)據(jù)管理。

因為它的深度封裝雖然讓開發(fā)變的簡單高效,可對于業(yè)務相對復雜、高度定制的系統(tǒng)來說,Erupt 框架顯得力不從心,更關鍵的一點,它的社區(qū)并不算特別活躍,畢竟是個小眾框架。

不過,技術從來都是服務于業(yè)務的,如果你的業(yè)務與Erupt的氣質相匹配,別猶豫,用它!


標題名稱:干掉前端!3分鐘純Java注解搭個管理系統(tǒng),我直接好家伙
分享路徑:http://m.5511xx.com/article/cdejeec.html