Hasor 依賴和組合

2018-10-04 12:29 更新

前面我們簡單介紹了一下 Hasor 模塊化,并同時展現(xiàn)了一個簡單的例子。接下來在本小節(jié)我們展示一下在同一個項目中進行模塊化的實踐。


現(xiàn)在假定我們在開發(fā)一個用戶管理系統(tǒng),系統(tǒng)根據(jù)功能大致分為:用戶模塊、權限模塊、分類打標、登錄認證。


上述模塊劃分是業(yè)務緯度,在實際開發(fā)中我們真正落實寫代碼時往往會有一個技術緯度的功能分類。例如上述的業(yè)務模塊可能最終的技術模塊會這樣分:數(shù)據(jù)庫讀寫、OAuth、SSO、Domain、User、Auth。它們分別對應的是:

  • ORM --> 數(shù)據(jù)模型和數(shù)據(jù)庫的映射,并提供數(shù)據(jù)庫操作。
  • OAuth --> 合作網(wǎng)站登錄。
  • SSO --> 單點登錄方案。
  • Auth --> 權限認證和查詢接口。
  • Domain --> 數(shù)據(jù)模型。
  • User --> 用戶系統(tǒng)的業(yè)務邏輯。


接著使用 Hasor 的 Module 可以定義每一個模塊,這里很簡單無外乎就是定義了 幾個類。例如:

public class MyBatisModule implements Module { ... }
public class OAuthModule implements Module { ... }
public class SSOModule implements Module { ... }
...


現(xiàn)在我們已經(jīng)可以用不同的模塊類將不同的部分隔離開,接下來我們需要一個地方將它們整體配置到一起,并指定它們的順序。


第一個方式,就是我們前面幾次經(jīng)??吹降姆绞?,通過 xml 配置這些 Module。當然在這里您也可沿用這種方式。

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://project.hasor.net/hasor/schema/main">
    <hasor.modules>
        <module>net.myproject.db.MyBatisModule</module>
        <module>net.myproject.auth.OAuthModule</module>
        ...
    </hasor.modules>
</config>


第二種方式,就是我們現(xiàn)在要介紹的一種全新的形式來組合您的模塊。這種方式比起xml 配置來說簡單的很多,使用也很方便。首先找到我們項目的入口 Module,我們假定這個 Module 名字叫做 RootModule。那么接下來我們只要在 RootModule 中想下面這樣把這幾個 Module 安裝進去就可以了。

public class RootModule implements Module {
    public void loadModule(ApiBinder apiBinder) throws Throwable {
        apiBinder.installModule(new MyBatisModule());
        apiBinder.installModule(new OAuthModule());
        ...
    }
}


在第二種方式中我們看到一個 Module 可以被另外一個 Module 所安裝。這就是 Hasor Module 提供的全新的一種方式來處理模塊的依賴配置,這種方式會大大降低我們對配置文件的依賴程度,并且有助于模塊配置的搞內聚。


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號