1步,直接調用構造函數,將ini設置到成員變量中,沒什麼可看的。
2步,最終會調用WebIniSecurityManagerFactory.createInstance(Ini ini)方法
由上面的代碼可以看出,SecurityManager優先且只處理[main]部分的內容。
上面這段代碼是核心,集中在以上3個步驟中
1步,做的事情最多,看下圖
我們接着看SecurityManager是如何create的
繼續super()方法,如下
繼續看super()方法,如下
最終的super()方法實現,如下,設置了eventBus
好,我們再回到SessionsSecurityManager的構造函數,看看DefaultSessionManager都幹了什麼
我們來看一張Session的類圖
我們再回到,IniSecurityManagerFactory.createDefaults(Ini ini, Ini.Section mainSection)看看createRealm(Ini ini)如何實現
很簡單,對吧。。。
再回到IniSecurityManagerFactory.createSecurityManager()
其中的buildInstances()方法,很簡單,用反射把[main]節點設置的filter, real等進行實例化,並加到一個map中。
其中的setRealms()方法,如下
afterRealmsSet()是核心,如下
OK,完成...