zoukankan      html  css  js  c++  java
  • SSM三大框架的运行流程、加载顺序

    SSM三大框架的运行流程、加载顺序

    web项目启动的加载顺序
    以Tomcat举例,启动Tomcat之后,首先会加载web.xml文件:
    a)容器首先读取web.xml中的<context-param>的配置内容和<listener>标签中配置项;
    b)紧接着实例化ServletContext对象,并将<context-param>配置的内容转化为键值传递给ServletContext;
    c)创建<listener>配置的监听器的类实例,并且启动监听;
    d)随后调用listener的contextInitialized(ServletContextEvent args)方法,ServletContext = ServletContextEvent.getServletContext();
     此时可以通过ServletContext获取context-param配置的内容并可以加以修改,此时Tomcat还没完全启动完成。
    e)后续加载配置的各类filter;
    f)最后加载servlet;
    web.xml中配置项的加载顺序是 context-param=>listener=>filter=>servlet,配置项的顺序并不会改变加载顺序,但是同类型的配置项会影响加载顺序,servlet中也可以通过load-on-startup来指定加载顺序。
    REF https://www.cnblogs.com/sss-justdDoIt/p/10060129.html

    Spring加载顺序
    Spring在初始化容器时,会先解析和加载所有的Bean (如果没有设置为延迟加载的话,即bean标签中的lazy-init没有设置为true),如果符合要求则通过Class生成BeanDefinition,存入BeanFactory中,在加载完所有Bean Class后,开始有序的通过BeanDefinition实例化Bean。同一级别的bean一般按照文件中的顺序进行初始化。
     补充两点
     (1)如果一个bean的scope属性为scope="pototype"多例时,lazy-init的属性值即使设置为false,容器启动时也不会实例化bean,而是等到需要时,再进行实例化。
     (2)如果一个beanA依赖于另一个beanB,而你需要将beanA设置为单例,beanB设置为多例时,不能简单的将将beanB嵌套在beanA中,因为那样设置的话,由于外围的beanA在启动的时候就已经设置为单例了,而beanA又依赖于beanB,所以连带着beanB也被实例化,此时会将beanB也实例化为单例的。
    REF:https://blog.csdn.net/legendaryhaha/article/details/90759319

    mybatis的执行流程

    mybatis运行时要先通过resources把核心配置文件也就是mybatis.xml文件加载进来,然后通过xmlConfigBulider来解析,解析完成后把结果放入configuration中,并把它作为参数传入到build()方法中,并返回一个defaultSQLSessionFactory。我们再调用openSession()方法,来获取SqlSession,在构建SqlSession的同时还需要transaction和executor用于后续执行操作。
    REF https://blog.csdn.net/qq_38270106/article/details/93398694

    REF

    https://blog.csdn.net/lyfqyr/article/details/84552278

  • 相关阅读:
    框架基础
    Servlet
    JSP数据交互二
    动态网页开发基础
    数据交互
    期末Java Web大作业----简易的学生管理系统
    南阳71----独木舟上的旅行
    南阳1092----数字分隔(二)
    顺序表、链表、栈和队列
    各类排序模版(计数排序、基数排序、桶排序、冒泡排序、选择排序、插入排序、希尔排序、归并排序、原地归并排序、快速排序、堆排序)
  • 原文地址:https://www.cnblogs.com/emanlee/p/15731032.html
Copyright © 2011-2022 走看看