struts2+spring 如何在容器外获取到bean ApplicationContext ac = new ClassPathXmlApplicationContext("/WEB-INF/applicationContext.xml"); A a = (A)ac.getBean("a");简单,用上面方式就可以了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你Spring是怎么配置的,如果是单独配置的话,你将spring配置文件中的bean装配方式配置成按名称自动装配应该就可以实现struts外直接注入了。struts2.0没用过,不知道对不对,关注一下! 这个肯定能获得bean,但我需要的不是这个。在web服务器启动的时候,已经由web服务器的listener实例化了所有的bean,也就是说spring的bean容器实际是由web服务器托管,但是目前由spring管理的这些bean只能在struts2中的action得到(自动注入的方式),我现在就是想在action外得到spring容器,从而得到bean,而不是像上面一样重新去加载所有的spring bean,那样的话性能会有严重的问题。 ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(servletContext);userService= (UserService)ctx.getBean("userService"); 呵呵,这个我也试过了,问题是我如何获取servletContext呢? ServletActionContext .getServletContext()这种方法是获取不到servletContext,返回的是null 慎用此法,会导致上下文重复加载参考ApplicationContextAware定义bean实现此接口把bean定义到applicationContext.xml中应用加载后,会执行bean中如下方法,可以得到applicationContext,后面怎么用就随便你了 public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { //静态变量 = applicationContext; } 问题是你在哪里用,你说的action外的一个类是什么类,容器无关的类吗,那这个类是怎么被调用的,总有一个带context的入口从这里把参数传进去 楼上的这个是该bean已经被spring容器加载了,似乎和问题无关 谢谢了,也许这是唯一的方法了,担不是我想要的那种方法,因为我都能得到bean了,还要容器做什么,我只能用这种方法曲线解决我的问题,先把这个bean放在某个全局变量中,在其它地方用的时候取这个全局变量再取其它bean。 要得到ServletContext那就导入ServletContextAware interface啊,依葫芦画瓢哦,晕~ 要得到ServletContext那就导入ServletContextAware interface啊,依葫芦画瓢哦,晕~ jCharts制图出现问题 请教大家一个问题,ehcache server部署的问题 myeclipse配置tomcat出错 一个关于log4j问题,将日志信息记录到mysql中 tomcat运行得好好的项目转到weblogic后,凡是标签里有中文的都报错! 请问关于struts tiles 的错误! 请教:CORBA,RMI和EJB三者之间是什么关系呢? 模式识别与智能系统,来者有分! 请教axis与webservice 推荐一本XML的书(inlcude schema, not dtd),进来有分 关于spring的配置 怎样自动判断登录角色并转入相应的服务页面?
这个肯定能获得bean,但我需要的不是这个。在web服务器启动的时候,已经由web服务器的listener实例化了所有的bean,也就是说spring的bean容器实际是由web服务器托管,但是目前由spring管理的这些bean只能在struts2中的action得到(自动注入的方式),我现在就是想在action外得到spring容器,从而得到bean,而不是像上面一样重新去加载所有的spring bean,那样的话性能会有严重的问题。
userService= (UserService)ctx.getBean("userService");
呵呵,这个我也试过了,问题是我如何获取servletContext呢?
ServletActionContext .getServletContext()这种方法是获取不到servletContext,返回的是null
定义bean实现此接口
把bean定义到applicationContext.xml中
应用加载后,会执行bean中如下方法,可以得到applicationContext,后面怎么用就随便你了 public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
//静态变量 = applicationContext;
}
从这里把参数传进去
谢谢了,也许这是唯一的方法了,担不是我想要的那种方法,因为我都能得到bean了,还要容器做什么,我只能用这种方法曲线解决我的问题,先把这个bean放在某个全局变量中,在其它地方用的时候取这个全局变量再取其它bean。