Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
spring中WebApplication上下文的优势?_Spring_Struts - Fatal编程技术网

spring中WebApplication上下文的优势?

spring中WebApplication上下文的优势?,spring,struts,Spring,Struts,我需要将struts与spring集成。基本上,我想从我的action类中的spring容器中获取bean。比如,如果我想在我的action类中获取任何dao/helper类,我应该使用spring获取它。我正在阅读一本书,书中说使用WebApplicationContext在我的action类中获取bean 我的问题是我们不能在我的action类中使用simple XMLBeanFactory或ClassPathXmlApplicationContext(带getBeanMethod)而不是W

我需要将struts与spring集成。基本上,我想从我的action类中的spring容器中获取bean。比如,如果我想在我的action类中获取任何dao/helper类,我应该使用spring获取它。我正在阅读一本书,书中说使用WebApplicationContext在我的action类中获取bean

我的问题是我们不能在我的action类中使用simple XMLBeanFactory或ClassPathXmlApplicationContext(带getBeanMethod)而不是WebApplicationContext。(因为WebApplicationContext只有一个额外的方法,即getServletContext(),我们在获取任何模型Bean的过程中都不需要它)


在同一个应用程序中,我的第二个问题是,如果我们还想在我的businesshelper.java中获得任何其他bean,我应该通过WebApplicationContext或ApplicationContext的任何其他子类(如ClassPathXmlApplicationContext)获得它吗,
WebApplicationContext
绝对是一条路要走。它不仅可以为您处理启动和关闭,还可以很好地与servlet环境集成。也就是说,它自动在ServletContext中的
org.springframework.web.context.WebApplicationContext.ROOT
键下注册自己

我之所以提到这一点,是因为Struts可能使用它来定位应用程序的web应用程序上下文。否则Struts怎么会知道这一点

关于你的第二个问题:真的选择
WebApplicationContext
。然后,您可以(作为最后手段)使用
webapplicationcontextils.getRequiredWebApplicationContext()
获取bean


ClassPathXmlApplicationContext
可能仅在进行桌面开发或沙盒/教程项目时有用。

感谢Tomasz。正如您所说,“我之所以提到这一点,是因为Struts可能使用它来定位应用程序的web应用程序上下文”。您是想说struts action通过WebApplicationContext提供的密钥了解spring配置文件的路径。是这样吗?如果不是,您的应用程序的web应用程序上下文是什么意思?您有两个框架:spring和struts。您希望Struts以某种方式从Spring获取bean,因此Struts需要一种“连接”到Spring的方法。这个键是最简单的方法,因为两者都可以使用servlet上下文。不,Struts不读取Spring context.xml文件,但它们可以从中访问到getBean()的Spring上下文对象。如果两个框架类都在类路径中,而我们在Struts操作类中都使用applicationcontext.getBean(“MyClass1”),那么这会有什么问题吗?为什么这里需要关键点。将Struts(1和2)与Spring集成的要点是让Struts从应用程序上下文获取bean,并自动将它们注入Struts操作。如果您使用
getBean()
(或者在Struts类中使用任何SpringAPI)手动获取bean,那么您就做错了。其思想是让Struts知道(web)应用程序上下文,并透明地获取所需的bean,而您甚至没有注意到。