2016-08-14 86 views
0

我的问题很简单:春天.getBean(...)在Struts应用程序,而不主要方法

我有我创建的使用Spring的依赖注入和Hibernate集成一个Struts web应用程序。

这个程序没有主要方法。

从我的理解我需要在我的应用程序中(通常放在主要方法)...他们说Spring需要创建这样的第一个bean。

MyClass myClass = applicationContext.getBean("myClass"); 

除了把这段代码从Struts的操作servlet(它的工作原理,当我做到这一点),有没有什么办法来摆脱它?当我通过这样做摆脱它:

@Autowire 
MyClass myClass; 

... 
... 
myClass.doSomething(); 

我得到空指针异常和没有豆注入。

如果没有办法摆脱getBean,它在没有主要方法的Web应用程序中用于何处?

+1

你没有描述你如何试图将Spring集成到你的Struts应用程序中。 (也没有指出你正在使用的Struts外部排序的版本。)尽管Struts 1是由直接显示的IIRC支持的,但Struts 2通过Spring插件提供了微不足道的支持。 –

+0

struts 1.3,spring 3.2,hibernate 4.x.这是一个简单的与休眠的CRUD测试应用程序。 – aleksandar

+0

(Again IIRC)Spring 3直接支持Struts 1,其用法在Spring文档中有详细介绍。 –

回答

0

如果你想这样做没有你的Struts行为作出任何显式调用春天拿到豆(我们使用WebApplicationContextUtils),this article介绍了其他两个选项:

  1. 配置Spring管理作为bean的操作,使用ContextLoaderPlugin,并在Spring上下文文件中设置它们的依赖关系。

  2. 子类Spring的ActionSupport类使用getWebApplicationContext() 方法显式获取Spring管理的bean。

2并不回避什么,我想你想避免:在你的Struts动作春意识。 (虽然@Autowired也是一个特定于Spring的注解。)

我不知道1如何与struts-config.xml进行交互,就像你必须在两个地方重复动作一样。

我们决定在我们的应用程序的基类Action类中明确要求Spring提供一个或两个高级bean(“facades”)是最简单的方法。

相关问题