用 LightAdmin 快速產出優雅且完整的 CRUD 後台

light-admin-logo

今天想跟各位分享如何透過 LightAdmin「快速建構」出一個具 CRUD 功能的資料管理平台。

本文將簡單示範 LightAdmin 的功能,目的是讓大家對 LightAdmin 有個初步的了解,對 Spring / JPA 有興趣的人千萬別錯過這篇心得!


前言

由 la-team 團隊所開發的 LightAdmin 是一個用於Java Web Application 的 UI library,目前版號為 1.2.0.RC1

而 LightAdmin 的優點很多,例如高度模組化的Configuration、RESTful,更具備進階 Search / Filter 和 Auto-Validate / ScopeFilter 等強大功能,對想節省自建後台成本的人來說是不可多得的利器!

adv-search

尤其搭配上 Spring Boot 更能節省繁瑣的專案配置,LightAdmin 開發團隊甚至於 官網 首頁寫上:

The best match for Spring Boot powered applications!

可見 LightAdmin 十分適合與 spring-boot 結合,故本篇心得也將會使用 spring-boot 進行簡單示範。


Required


Getting Started

首先至 Github clone 下來,並打開 IDE 瀏覽一下專案吧!

setting-pom

先來檢查一下 maven,pom.xml 要設定的有:

  • 定義 Repositories
  • 設定 LightAdmin 的 Dependency,此處我們設定最新版本 1.2.0.RC1

其他細節可以先略過,並打開 src/main/java/org.lightadmin.boot/ 目錄下的 LightAdminBootApplication.java 進行 Servlet 的設定。

如第47行的 servletContextInitializer() 中,可以設定你撰寫的 admin 程式所屬之 Package、後台 Url、Security 為 True 則代表後台需要登入驗證。

.basePackage("org.lightadmin.boot.administration")

.baseUrl("/my-admin")

.security(true)

.backToSiteUrl("http://trunk-studio.com/blog/");

在這次範例中,我設定了 baseUrl 為 my-admin,並將網址設定為創科資訊的 Blog。


Run and Have fun!

其實設定到這不過就花五分鐘而已,但其實 LightAdmin 已經幫我們把其他所有的事情都做好了,很神奇吧!來看看 LightAdmin 幫我們做了些什麼。哦對了!記得先啟動 MySQL Service。

現在,打開你的 Terminal (還是習慣自己下 Command 呀⋯),切換到專案根目錄,輸入:

mvn spring-boot:run  

mvn-run-1

成功的話會看見 Spring Boot 的圖示、和最後 JVM Running 的訊息,若出現 Database alter error 可以先忽略。

是不是很興奮啊,趕快打開瀏覽器看一下我們的後台長什麼樣子吧:

localhost:8080/my-admin  
Tips
  • 預設帳密 admin / admin
  • 網址後面接的 my-admin 是我前面設定的 baseUrl。

mvn-run-2

Clone 下來的專案已經幫我們設定了一些資料表,因此接下來,我們會參考它們並進行修改。


Customize


Data Admin 設定

administraion/ 目錄

這邊需為每個 Entity 建立一個 Class,例如 City 的 Admin 就是 CityAdministration。其他 Customization 設定像是 listView、AddView、EditView 等,也都在此進行設定。這次心得先簡單帶過,下次會詳細介紹其用法。


Data Model 設定

domain/ 目錄

LightAdmin 基於 JPA-based 的 ORM,故了解 JPA / Hibernate 的人對其用法應該不難上手。

更進階如關聯設定,請參考 JPA 文件:


其他設定
  • import.sql 對資料庫進行 pre-query
  • application.properties 可在此設定 spring-boot 的各種屬性。如:
    • datasource 的 url、username、password、driver 等
    • mysql 的 dialect
    • hibernate 的 ddl-auto 方式,如 createcreate-dropupdate
    • 詳細用法請參考 Spring Boot Docs
  • users.properties 設定管理員帳密,這邊使用SHA1進行密碼的加密。
LightAdmin 的限制

la-team 在官網提到:

currently LightAdmin can only be used with JPA based applications.

雖然目前 LightAdmin 只支援 JPA-based,但只要資料庫的設計遵循著某些 ORM 的原則,LightAdmin 也是能搭配其他語言或框架的。


評價與總結


LightAdmin 還是個年輕待開發的潛力股,相較於自己開發 CRUD 後台,LightAdmin 是一個非常值得考慮的替代方案。但官網的文件寫的較粗且不夠友善,是我覺得可惜之處。

由於目前在用 LightAdmin 的人並不多,希望透過這個心得達到拋磚引玉的效果,引起更多人的關注,以增加討論的活耀度。LightAdmin 還有很多更強大的功能我尚未介紹,未來也繼續撰寫心得分享。

最後,感謝耐心看完的每一個人,若有問題非常歡迎提出討論,謝謝大家!


延伸閱讀