shiro.ini加載過程

第1步,getIni()直接返回實例變量this.int

第2步,我們追一下configLocations是從哪裏來的


1步,就是web.xml中配置的,參數名是shiroConfigLocations。

2步,ResourceConfigurable,這個類,從類名就可以看出是支持指定resource的Environment初始化,

3步,會直接調用IniWebEnvironment的init()方法進行初始化。

繼續看下去,我們來看看用戶指定的resource是如何加載的


1步,如果configLocations不是classpath:或url:或file:開頭的,則用ServletContext.getResourceAsStream()方法獲取inputStream流,否則,分別以loadFromClassPath(), loadFromUrl(), loadFromFile()方法來獲取inputStream流。

好,繼續看下去,來看看ini.load()做了什麼。


1步,將inputStram包裝成Scanner,逐行進行處理。

2步,不處理#號開頭的註釋行,不處理;號開頭的行

3步,獲取sectionName,就是[main], [users], [roles],[urls]這樣的名字

4步,addSection方法會將string類型的content轉換成Section對象

Section對象,就是一個擴展的Map,看下圖


好了,我們再回到IniWebEnvironment中的getDefaultIni()方法,沒啥特別的,加載默認的配置文件,


好了,至此,IniWebEnvironment初始化加載shiro的configLocation,講完。

發佈了154 篇原創文章 · 獲贊 203 · 訪問量 103萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章