我为我的应用程序编写了一个自定义Struts RequsetProcessor,它手动从Spring获取一些引用。它工作得很好,但我想做“正确”的事情,并在施工时注入我需要的一切。
有没有办法定义一个自定义Struts RequestProcessor,当Struts实例化这个RequestProcessor时我可以将Spring对象注入其中?
答案 0 :(得分:1)
简短的回答是“不”。长的回答是“有点”:
假设Struts通过ContextLoaderPlugin在您的应用程序中与Spring集成,您可以执行以下两项操作之一:
A)创建一个你将在Spring上下文中定义的“ProcessorContext”bean(或任何你想要调用的bean),并通过从Spring的上下文中获取它来从自定义请求处理器访问(可以通过{{1 }})。
B)如果您的自定义处理器扩展了Spring WebApplicationContextUtils.getWebApplicationContext(getServletContext())
或DelegatingRequestProcessor
,您可以改为编写一个新请求处理器,以便在功能上执行您想要的操作,将其绑定到带有所有依赖项的Spring上下文,然后扩展DelegatingTilesRequestProcessor
或DelegatingRequestProcessor
以从上下文(通过类型或id)获取它并委托给它。这实际上是(A)的扩展,但它将所有Spring的管道委托给Spring的请求处理器扩展,使您的自定义处理器与Spring无关。
Spring / Struts集成详细描述了here。