zoukankan      html  css  js  c++  java
  • tomcat与springmvc 结合 之---第17篇 StandContext容器和SpringMVC的WebApplicationContext的联系

    writedby 张艳涛,

    上一篇分析了,dispatcherservlet通过getServletConfig 方法获取了web.xml定义的<param-init>属性的过程

    那么在如果在Controller里面使用servletContext 和seervletConfig对象怎么办?

    public class NoannaContoller implements Controller , EnvironmentAware, ApplicationContextAware {
        @Override
        public ModelAndView handleRequest(HttpServletRequest request,
                                          HttpServletResponse response) throws {}
        private Environment environment=null;
    
        @Override
        public void setEnvironment(Environment environment) {
            this.environment=environment;
        }
        private    ApplicationContext applicationContext=null;
        @Override
        public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
            this.applicationContext=applicationContext;
        }
    }

    答案是实现XXXAware,那么如果给红色的打个断点,那么看看,

    可以看到是在bean对象noannaController对象初始化的时候给对象进行了赋值,

    调用关系

    这里就非常明确了实现aware接口的类,会在创建applicationcontext过程中将自己传给aware类

    这里还设计一个问题就是这个类叫org.springframework.web.context.support.XmlWebApplicationContext,那创建之后会存到tomcat的StandardContext容器的

    ApplicationContext中,存的key 是org.springframework.web.servlet.FrameworkServlet.CONTEXT.springmvc

    如图

    注:org.springframework.web.servlet.FrameworkServlet.CONTEXT.springmvc 是由

    SERVLET_CONTEXT_PREFIX + getServletName();
    其中org.springframework.web.servlet.FrameworkServlet.CONTEXT. + servlet的名字来确定
        <servlet>
            <servlet-name>springmvc</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <!-- contextConfigLocation配置springmvc加载的配置文件(配置处理器、映射器等) 如果不配置contextConfigLocation,默认加载的是/WEB-INF/servlet名称-servlet.xml(springmvc-servlet.xml) -->
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath:springmvc.xml</param-value>
            </init-param>
        </servlet>

     

  • 相关阅读:
    NOIP2017 时间复杂度 大模拟
    【Python】CV2的一些基本操作
    【Python】类、对象、self
    【Ubuntu18.04】清空回收站
    小飞机可以解决git clone没有返回的问题吗?
    sqlserver2005 远程服务器数据 完全拷贝 到本地数据库
    Microsoft Visual Studio 2005 多线程时 解决不是该线程创建的来访问
    MS SqL2000 数据库置疑状态的解决方法[转]
    vue 函数配置项watch以及函数 $watch 源码分享
    Vue生命周期之beforeCreate vue 生命周期详解
  • 原文地址:https://www.cnblogs.com/zytcomeon/p/15035549.html
Copyright © 2011-2022 走看看