我正在使用基于 Spring MVC 的前端中使用 RestEasy 创建的 REST API。
有两个 WAR 项目正在开发中。
- RestEasy + 基于 Spring IOC 的 REST API
- 基于 Spring MVC + Spring IOC + RestEasy 客户端代理的前端。
我正在使用 RestEasy 客户端代理来调用其余服务。 JAX-RS 契约接口(interface)在 RestEasy API 端以及 Spring MVC 应用程序中共享。
在基于 Spring MVC + Spring IOC + RestEasy 客户端代理的项目中, 我正在尝试将 session 范围 bean Autowiring 到在 Spring MVC Controller 中定义的 RestEasy ClinetInterceptor 中。
我使用了注释。但我仍然在 ClientInterceptor 内的 Autowired Session Scoped bean 上得到 NPE。
如何解决这个问题?
最佳答案
要在单例 bean/原型(prototype)作用域 bean 中注入(inject) session 作用域 bean,应使用作用域代理来声明 session 作用域 bean,作为 Spring 注入(inject) bean 代理作为 bean 的占位符。
session 作用域 bean 可以通过以下方式声明为作用域代理:
在 XML 声明中,
<bean ... scope="session">
<aop:scoped-proxy/>
</bean>
如果您使用注释,
@Scope(value="session",proxyMode= ScopedProxyMode.TARGET_CLASS)
代理模式提供有关生成代理类型(基于接口(interface)/基于类)的信息。
关于java - 如何将 String MVC session 范围 Bean Autowiring 到 RestEasy 客户端拦截器中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17280586/