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、结束


你可能感兴趣的:(spring,Web,bean,xml,Ajax)