我需要在spring mvc应用程序的业务层中获取servlet应用程序上下文。
我已尝试实施ApplicationContextAware
接口,自动装配WebApplicationContext
字段,甚至实施ServletContextAware
并使用WebApplicationContextUtils
获取应用程序上下文,但这些都不起作用。
还有其他办法吗?我想避免必须从控制器传递HttpServletRequest
参数来获取业务对象中的应用程序上下文。
如果它有用,我在WebSphere 6.1服务器上运行,我认为它有servlet 2.4 api。
答案 0 :(得分:1)
实施ApplicationContextAware
并注入ApplicationContext
工作。这就是要走的路。你必须找到其他问题阻止它工作(实际上它是如何工作的?)
例如,确保您未使用new
运算符实例化服务类。
顺便说一句,您不能也不应该在服务层中获取子应用程序上下文(由dispatcher-servlet定义)。这意味着父母会知道子情境 - 而事实并非如此。因此,您打破了图层边界。想想处理这个任务的另一种方法 - 比如在控制器中注入上下文(它应该在那里工作),然后将所需的参数传递给服务。