我的问题很简单:
我创建了一个Struts Web应用程序,它使用Spring进行依赖注入和Hibernate集成。
此应用程序没有主要方法。
根据我的理解,我需要在我的应用程序中使用它(通常放在main方法中)......他们说Spring需要像这样创建第一个bean。
MyClass myClass = applicationContext.getBean("myClass");
除了将此代码放在Struts的Action servlet中(当我这样做时它可以工作),有什么方法可以摆脱它吗?当我通过这样做摆脱它:
@Autowire
MyClass myClass;
...
...
myClass.doSomething();
我得到空指针异常,没有注入bean。
如果没有办法摆脱getBean,那么在没有主方法的网络应用程序中使用它在哪里?
答案 0 :(得分:0)
如果你想在没有Struts操作的情况下进行任何显式调用Spring来获取bean(我们使用WebApplicationContextUtils),this article描述了另外两个选项:
使用ContextLoaderPlugin配置Spring以将Bean作为bean进行管理,并在Spring上下文中设置它们的依赖项 文件
- 醇>
子类Spring的ActionSupport类并使用getWebApplicationContext()显式获取Spring管理的bean 方法
2并没有避免我认为你试图避免的事情:在你的Struts动作中有Spring意识。 (虽然@Autowired
也是一个特定于Spring的注释。)
我不知道1如何与你的struts-config.xml进行交互,就好像你必须在两个地方复制动作一样。
我们决定在我们的应用程序的基础Action类中明确地向Spring请求一个或两个高级bean(“facades”),这是最简单的方法。