java - 如何将 String MVC session 范围 Bean Autowiring 到 RestEasy 客户端拦截器中?

标签 java spring spring-mvc jax-rs resteasy

我正在使用基于 Spring MVC 的前端中使用 RestEasy 创建的 REST API。

有两个 WAR 项目正在开发中。

  1. RestEasy + 基于 Spring IOC 的 REST API
  2. 基于 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/

相关文章:

java - 为什么在输入字段中输入内容时,我的 ActionBar 消失了?

java - JDBC 以 block 的形式检索 Oracle 数据

java - 优化获取上一条记录和下一条记录的方式

java - 使用 POJO 和 Enum 将 JSON 转为 Spring Controller

java - 在 WEB-INF 文件夹下包含 JSP 文件

java - 当我尝试在 java 中调用该类时,为什么我会得到一个空白表单

java - Mac OS X 中的 "Click to execute"

java - Controller 不支持 Spring

spring - 使用Spring加载属性(通过系统属性)

java - 使用 jQuery,如何将字符串数组作为 http 参数附加到 http 请求?