easyjweb啓動

 

當tomcat啓動時,由web.xml配置信息中初始化CharsetFilter類和ActionServlet類,啓動順序可由load-on-startup配置。ActionServlet繼承自HttpSetvlet類,由init(SetvletConfig)方法啓動,執行initEasyJWeb()方法進行初始化:


1、讀取配置文件

  • 配置文件默認爲WEB-INF/easyjf-web.xml,也可在web.xml中更改配置路徑

<context-param>
	<param-name>easyjwebConfigLocation</param-name>
	<param-value>/WEB-INF/easyjf-web1.xml,/WEB-INF/easyjf-web2.xml</param-value>
</context-param>
  • 讀取得到modules,forms,pages,beans,initApp,interceptors,errorHandler,ajaxConfigManager,全局屬性配置等,保存在webConfig中。

2、初始化容器

  • 將所有module另以bean形式保存,在容器中註冊配置的bean並加載及註冊defaultActionPackage中的bean(@Bean註解)以及module(*Action類名),處理module的別名alias。
  • bean的scope有四種方式:
    • singleton:在一個應用上下文中,只存在一個該bean的實例。是bean的默認scope,若該bean非lazy則在容器初始化時馬上初始化並註冊到單例容器SingletonBeanContainer中
    • prototype:每次請求都重新生成一個新的對象。實例化後返回即用不保存。
    • request:在一個請求生命週期內存在
    • session:在一個session生命週期內都存在
 若配置了factory-method則執行無參方法,或者根據constructor-arg配置構造類實例。
  • easyjweb內置了IOC容器,根據bean配置信息進行setter注入
    • 屬性註解:@Inject(name="xx"),xx默認爲AutoJnjectByType,按照類型注入;若xx="service",則注入name="service"的bean,需要手動配置。@DisInject表示不注入。
    • 文件配置:inject屬性有3種none、bytype、byname,module默認爲none,bean默認爲bytype。none表示不注入,bytype按照屬性類型注入,byname注入指定的bean,需要配置相應property。
    • 最後用com.easyjf.beans.BeanWrapper實現setter方法注入。
  • 容器bean包含三部分:1、單例bean容器SingletonBeanContainer,均已實例化,2、普通bean,註冊在容器中,每次獲得均需要實例化,3、innerContainer,如spring容器中配置的bean,每次查找bean的順序分別是單例bean-->普通bean-->innerContainer

3、初始化其他信息

  • 將webConfig、container、ActionServlet保存到FrameworkEngine中,便於調用
  • 初始化Ajax服務(保存AjaxConfigManager信息),模板(配置velocity),啓動initApp

4、結束


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章