W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
findModules
:查找所有可以加載的 Module。doInitialize
:執(zhí)行 init 階段的起始標志。newApiBinder
:創(chuàng)建 Module 在執(zhí)行 loadModule 方法時用到的 ApiBinder 參數(shù)。installModule
:加載每一個 Module。doBind
:容器級的初始化操作doInitializeCompleted
:執(zhí)行 init 階段的終止標志。findModules,這個階段的目的是找出所有配置文件中的 Module 并創(chuàng)建它們,這些 Module 將會在 installModule
階段中加載它們。
現(xiàn)在我們編寫一個 HelloWord
Module 然后放入配置文件。然后我們啟動 Hasor 讓 findModules
來加載我們的 Module。首先我們創(chuàng)建 Module。
package net.test.hasor;
public class HelloModule implements Module {
public void loadModule(ApiBinder apiBinder) throws Throwable {
System.out.println("Hello Module");
}
}
接下來我們準備一個 Hasor 配置文件,并且填入如下內容:
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://project.hasor.net/hasor/schema/main">
<hasor.modules>
<module>net.test.hasor.HelloModule</module>
</hasor.modules>
</config>
最后啟動 Hasor 就可以看到 Hello Module
打印在控制臺上。
Hasor.createAppContext("my-config.xml");
Hasor 的很多套件都是通過這種方式進入啟動流程,即便是您沒有做過絲毫配置。例如:RSF。
如果您想要一個最純粹的 Hasor,不希望它在初始化時加載任何插件,您可以通過 HASOR_LOAD_MODULE
環(huán)境變量禁用 findModules
。例如:下面這個配置中 HelloModule
就不會被加載,同時任何一個內置的 Module 都不會被加載。
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://project.hasor.net/hasor/schema/main">
<hasor>
<environmentVar>
<!-- 是否加載模塊 -->
<HASOR_LOAD_MODULE>false</HASOR_LOAD_MODULE>
</environmentVar>
<modules>
<module>net.test.hasor.HelloModule</module>
</modules>
</hasor>
</config>
為了達到上面這個效果您還可以這樣設置配置文件。有關配置文件特性的細節(jié)請訪問配置文件相關章節(jié)。
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://project.hasor.net/hasor/schema/main">
<hasor.modules loadModule="false">
<module>net.test.hasor.HelloModule</module>
</hasor.modules>
</config>
doInitialize
和 doInitializeCompleted
兩個階段。除非您是在擴展 TemplateAppContext
否則您是無法截獲到這兩個階段調用通知的。在 Hasor 內部 doInitializeCompleted 方法會負責通知 BeanContainer
完成對標記了 @Init 方法的單例對象,以執(zhí)行啟動創(chuàng)建工作。
newApiBinder
本質上是創(chuàng)建 ApiBinder
接口對象的過程。在 Hasor3 之后,由于 ApiBinder 擴展機制的引入,newApiBinder 變得與 findModules 同樣重要。有關 ApiBinder 的內容在后面的 ApiBinder 章節(jié)會深入講解。
installModule
階段是循環(huán)所有已知 Module 并執(zhí)行它們的 loadModule
方法去初始化它們。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: