在没有main方法的struts app中使用spring .getBean(...)

时间:2016-08-14 00:50:01

标签: java spring struts-1

我的问题很简单:

我创建了一个Struts Web应用程序,它使用Spring进行依赖注入和Hibernate集成。

此应用程序没有主要方法。

根据我的理解,我需要在我的应用程序中使用它(通常放在main方法中)......他们说Spring需要像这样创建第一个bean。

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

除了将此代码放在Struts的Action servlet中(当我这样做时它可以工作),有什么方法可以摆脱它吗?当我通过这样做摆脱它:

@Autowire
MyClass myClass;

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

我得到空指针异常,没有注入bean。

如果没有办法摆脱getBean,那么在没有主方法的网络应用程序中使用它在哪里?

1 个答案:

答案 0 :(得分:0)

如果你想在没有Struts操作的情况下进行任何显式调用Spring来获取bean(我们使用WebApplicationContextUtils),this article描述了另外两个选项:

  
      
  1. 使用ContextLoaderPlugin配置Spring以将Bean作为bean进行管理,并在Spring上下文中设置它们的依赖项   文件

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

  4.   

2并没有避免我认为你试图避免的事情:在你的Struts动作中有Spring意识。 (虽然@Autowired也是一个特定于Spring的注释。)

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

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