99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

Hasor 依賴和組合

2018-10-04 12:29 更新

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


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


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

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


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

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


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


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

<?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 配置來說簡(jiǎn)單的很多,使用也很方便。首先找到我們項(xiàng)目的入口 Module,我們假定這個(gè) Module 名字叫做 RootModule。那么接下來我們只要在 RootModule 中想下面這樣把這幾個(gè) Module 安裝進(jìn)去就可以了。

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


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


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)