多麼痛的領悟,基礎數據的全部

歡迎訪問陳同學博客原文

名詞解釋:Lookup 指數據字典,常用於表示狀態,應用中通常爲枚舉類,頁面上可作爲下拉框的數據源。

本文以一個小故事分享基礎數據維護的一些事。

痛苦的原始生活

晚上九點,程序在生產環境部署完成,小A終於歇了口氣,開始按順序把各種基礎數據錄入系統。

  • 錄入新菜單
  • 錄入新接口
  • 錄入Lookup

重複着 Control C/V ,小A回想起開發 F功能 時的場景,真是慘不忍睹。

“擦,功能簡單至極,卻有5個Lookup,每個Lookup居然有十幾個項”,瞄完功能文檔後,小A痛不欲生。

好吧!又能怎樣呢?

吭哧吭哧創建了5個枚舉類,完成CRUD,痛苦的把Lookup維護到待發布文檔中。

接着,收集本次變更的接口。“POST請求,URI 是 /examples ……” ,小A唸叨着。

偷個懶吧

“開發時要維護,打斷思緒,影響心情;發佈時要複製粘貼,浪費時間。要是哪天漏維護,生產環境指不定還能生個阿哥。總這麼搞也不是事呀!”。睡在牀上,小A思考着。

“乾脆按規定格式維護到Excel裏吧,寫個導入程序,發佈時抓Excel數據然後自動導進DB。雖然開發時仍然要維護,但起碼發佈時輕鬆很多”。

第二天,設計完 Excel 中的數據結構,幾個小時後,小A快速完成了開發。錄入些基礎數據,測試一把,基礎數據自動進入DB,爽歪歪!

向小夥伴介紹完如何維護數據之後,小A期待着下次發佈的到來!

“哈哈哈哈,得虧我機智!”。兩週後,看着滿屏待維護的基礎數據,小A樂的合不攏嘴。

幾十秒,基礎數據 “刷刷刷” 自動導入了DB,Perfect!

剎不住的"懶車"

眨眼過去一個月,雖然發佈輕鬆一些,但平時反人類的維護工作還是歷歷在目。

上班路上,小A想着:“還能不能讓我安心的幹活了,非得搞定你不可”。

作爲 Java 程序小哥,小A自然知道 Spring 的 XML 維護時代、註解標記時代、Spring Boot 自動搞定各種體力勞動的奇妙,小A又回想起開發時的一些細節。

XML 手工定義 Bean,繁瑣不說,還容易把class維護錯。基礎數據也一樣,繁瑣,容易錯,還容易漏。

<bean id="userService" class="com.example.UserService"/>

JavaConfig 方式果然爽,coding的方式還是舒服很多!

@Configuration
public class UserConfiguration {
    @Bean
    public UserService userService {
        return new UserService();
    }
}

掃描並自動注入真贊!通過 @Service 標記,它成了爲類的屬性,UserService 就可以被自動處理了,完美呀!

@Service
public class UserService {}

我能不能也搞個掃描,然後加載到DB呢?關於Lookup,小A立馬構思了一個方案,聯想到了案例。

@Lookup
public class UserStatus {
    ACTIVE("ACTIVE", "正常"),
    INACTIVE("INACTIVE", "註銷"),
    FROZEN("FROZEN", "凍結");
}
  • Lookup 是枚舉類,定義 @Lookup 註解,爲類打上標記
  • 構建時利用 maven 掃描特定 package,收集 @Lookup 標記的數據,打成json文件放到jar包中
  • 部署時利用程序讀取json文件數據並導入到DB
  • 應用運行後自動讀取基礎數據,解析並加載

由於實現很簡單,小A慢慢的完成了設計和開發工作,各種基礎數據也逐漸被處理掉,筒子們從此可以專心的幹活。

後記

技術設計、開發、測試、部署過程中,會有許多臃腫、痛苦卻無法避免的維護工作。這些工作需要開發規範來約定,codereview 人員需要經常提醒新人,卻也會忘記維護,偶爾也會維護出錯,在構建新環境時還要處理一大堆額外維護工作。

許多元數據就在程序中,有的也是跟着開發步驟走,比如:

  • 利用Liquibase腳本來處理DB對象,腳本在部署包中
  • 利用 Swagger 來標記接口,定製開發,自動收集並導入DB
  • 利用自定義註解來處理 Lookup 等類似的數據,自動收集並導入DB

"利用安裝介質,一鍵部署,一個Docker鏡像搞定一切,隨時隨地隨意構建新環境!",這是最開心的方式,現在許多軟件產品都是運行一個鏡像即可。

” 出新境界吧!


歡迎關注陳同學的公衆號,一起學習,一起成長

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章