第一種是使用json格式的文件進行配置,如:

第二種:使用注解@IocBean

第三種:使用xml 略.......
我們自己實際的生產(chǎn)環(huán)境的用法是: 一般的依賴關(guān)系都是固定的,在運行的時候基本不變的,我們采用的是注解, 將可能變動的關(guān)系寫到配置文件里。 比如:我們將項目中各個分層之間的service采用的是注解,


將數(shù)據(jù)庫相關(guān)配置放到配置文件中,

問幾個問題: a.它是怎么知道哪些文件中配置是需要被容器管理的bean,以及需要掃描哪些類上的@IocBean注解呢?? nutz提供了一個注解(@IocBy)專門用于在主模塊類上指定掃描哪些文件以及注解。

有上圖可以知道: json方式配置的bean的加載器去webconfig/下,以及linux下的兩個路徑下掃描。 注解方式配置的bean加載器將掃描com.uxuexi開頭包下的類。 b.它是如何去掃描除本項目之外的jar包(一般都是自己創(chuàng)建的,不會掃描第三方)呢? 可以在項目啟動的時候,nutz的ioc容器加載完畢之前手動將要容器管理的bean掃描到容器中。
nutz在服務(wù)啟動的時候?qū)⑺斜籃IocBean注解的類以及配置在json格式文件中的類信息加載到一個map中。

就是上面圈住的那個map,其中key默認是這個類名。 而這個IocObject這個類主要就是記住這個類的信息:

就是說在服務(wù)器啟動的時候nutz只是掃描注解和文件將需要被容器管理的bean的信息集中存儲到一個地方中,并沒有真正的創(chuàng)建這些bean的實例。
分兩種種情況: 1.第一種當服務(wù)啟動的時候就需要獲取容器中的bean實例,可以手動獲取容器。

2.第二種是當我們的第一次http請求映射到的那個Module類,nutz會幫你去從ioc容器中取。


構(gòu)造函數(shù)注入:

屬性注入:

nutz通過將Filter的destroy方法在web容器停止運行的時候會將ioc容器銷毀,

NutzLoading類中的方法:

就是將緩存中存放map清空。
新聞熱點
疑難解答