ApplicationContext ac = new ClassPathXmlApplicationContext("/WEB-INF/applicationContext.xml");
   A a = (A)ac.getBean("a");简单,用上面方式就可以了

解决方案 »

  1.   

    你Spring是怎么配置的,如果是单独配置的话,你将spring配置文件中的bean装配方式配置成按名称自动装配应该就可以实现struts外直接注入了。struts2.0没用过,不知道对不对,关注一下!
      

  2.   


    这个肯定能获得bean,但我需要的不是这个。在web服务器启动的时候,已经由web服务器的listener实例化了所有的bean,也就是说spring的bean容器实际是由web服务器托管,但是目前由spring管理的这些bean只能在struts2中的action得到(自动注入的方式),我现在就是想在action外得到spring容器,从而得到bean,而不是像上面一样重新去加载所有的spring bean,那样的话性能会有严重的问题。
      

  3.   

    ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(servletContext);
    userService= (UserService)ctx.getBean("userService");
      

  4.   


    呵呵,这个我也试过了,问题是我如何获取servletContext呢?
      

  5.   


    ServletActionContext .getServletContext()这种方法是获取不到servletContext,返回的是null
      

  6.   

    慎用此法,会导致上下文重复加载参考ApplicationContextAware
    定义bean实现此接口
    把bean定义到applicationContext.xml中
    应用加载后,会执行bean中如下方法,可以得到applicationContext,后面怎么用就随便你了    public void setApplicationContext(ApplicationContext applicationContext)
                throws BeansException {
            //静态变量 = applicationContext;
        }
      

  7.   

    问题是你在哪里用,你说的action外的一个类是什么类,容器无关的类吗,那这个类是怎么被调用的,总有一个带context的入口
    从这里把参数传进去
      

  8.   

    楼上的这个是该bean已经被spring容器加载了,似乎和问题无关
      

  9.   


    谢谢了,也许这是唯一的方法了,担不是我想要的那种方法,因为我都能得到bean了,还要容器做什么,我只能用这种方法曲线解决我的问题,先把这个bean放在某个全局变量中,在其它地方用的时候取这个全局变量再取其它bean。
      

  10.   

    要得到ServletContext那就导入ServletContextAware interface啊,依葫芦画瓢哦,晕~
      

  11.   

    要得到ServletContext那就导入ServletContextAware interface啊,依葫芦画瓢哦,晕~