Java 项目启动流程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liiuijkiuu/article/details/52614866

Tomcat 加载中项目
Tomcat 加载项目的步骤:
1.第一时间tomcat回去查找Service xml文件用Dom去解析得到一些系统参数 如端口号之类的。
2.Tomcat启动时classloader开始工作 classloader记载的顺序是
1.最先是 JAVAHOME/jre/lib/ext/jar2.CLASSPATHjarclass3. CATALINA_HOME/common/classes下的class文件。   
  4. CATALINAHOME/commons/endorsedjar5. CATALINA_HOME/commons/i18n下的jar文件。   
  6. CATALINAHOME/common/libjarJDBCjarserver.xmlJDBCDriver7. CATALINA_HOME/server/classes下的class文件。   
  8. CATALINAHOME/server/lib/jar9. CATALINA_BASE/shared/classes   下的class文件
10.$CATALINA_BASE/shared/lib下的jar文件。   
  11.各自具体的webapp   /WEB-INF/classes下的class文件。   
  12.各自具体的webapp   /WEB-INF/lib下的jar文件。
3.通过寻找web.xml中去执行相应的doaction 方法 进而去 处理相应的业务方法

Spring 中通过配置web .xml 中的contextConfigLocation来装载配置文件 配置方法
在web.xml里配置Listener
xml 代码如下:  
     
        org.springframework.web.context.ContextLoaderListener listener-class >   
  
如果在web.xml里给该Listener指定要加载的xml,如:
xml代码如下:

      
           contextConfigLocation 
           classpath:applicationContext.xml
      
则会去加载相应的xml,而不会去加载/WEB-INF/下的applicationContext.xml。
但是,如果没有指定的话,默认会去/WEB-INF/下加载applicationContext.xml。

深入研究contextConfigLocation 我们会发现
这一个listener,我首先就会想contextConfigLocation这个一定能在ContextLoaderListener这个类当中找到,打开了源码,这个listener是实现了ServletContextListener这个接口的,这个接口只有两个方法:
1.public interface ServletContextListener  
2.    extends EventListener  
3.{  
4.  
5.    public abstract void contextInitialized(ServletContextEvent servletcontextevent);  
6.  
7.    public abstract void contextDestroyed(ServletContextEvent servletcontextevent);  
8.}  
而且它是继承了EventListener这个接口 回头看下
ContextLoaderListener这个类的方法,contextInitialized方法是用来初始化上下文的:这个方法返回了一个ContextLoader实例,进入到ContextLoader类中ConfigurableWebApplicationContext设置了从servletContext获取到的参数的值,再进入ConfigurableWebApplicationContext的代码中,它只是一个接口,进入StaticWebApplicationContext的setConfigLocation方法spring使用BeanUtils来初始化contextClass这个类实例这里使用了反射通过反射得到contextClass的构造方法 最终猜测:
通过Properties的getProperty方法得到WebApplicationContext 的实例

猜你喜欢

转载自blog.csdn.net/liiuijkiuu/article/details/52614866