zoukankan      html  css  js  c++  java
  • 如何在Struts2的拦截器中调用Spring容器

    第一种:

    通常用ApplicationContext来调用Spring配置文件中的一些Bean,所以首先创建Spring上下文容器。

    ApplicationContext ac = (ApplicationContext) invocation.getInvocationContext().getApplication().get(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);

    以上代码中invocation是Struts2拦截器方法intercept(ActionInvocation invocation)方法的参数

    其中ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE在源码中是这样定义的:

    String ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE = WebApplicationContext.class.getName() + ".ROOT";

    所以通过此种方式可以得到ApplicationContext

    第二种:

    ServletContext sc=ServletActionContext.getServletContext();
    ApplicationContext ctx=WebApplicationContextUtils.getWebApplicationContext(sc);

    首先获取Servlet上下文(这是Struts2访问Servlet三种方式中的一种)

    Spring给我们提供了WebApplicationContext的工具类很方便的访问WebApplicationContext,这种方式比上一种简单,

    但是如果仔细查看WebApplicationContextUtils的getWebApplicationContext(ServletContext sc)的源码会发现还是会用到ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE,所以归根结底它们的原理一样。

    public static WebApplicationContext getWebApplicationContext(ServletContext sc) {
            return getWebApplicationContext(sc, WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
        }

  • 相关阅读:
    产品团队管理
    产品版本规划
    gitlab服务器IP调整后修改domian或ip
    Linux服务器性能分析与调优
    linux设置别名连接远程服务器
    Yaml文件
    Alias采样算法
    Graph embedding(2)----- DeepWalk、Node2vec、LINE
    python学习(32)---networkx
    python报错
  • 原文地址:https://www.cnblogs.com/liuruowang/p/4534533.html
Copyright © 2011-2022 走看看