0

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

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

  1. RestEasy + 基于 Spring IOC 的 REST API
  2. 基于 Spring MVC + Spring IOC + RestEasy Client Proxy 的前端。

我正在使用 RestEasy 客户端代理来调用其余服务。JAX-RS 契约接口在 RestEasy API 端以及 Spring MVC 应用程序中共享。

在基于 Spring MVC + Spring IOC + RestEasy Client Proxy 的项目中,我试图将会话范围的 bean 自动装配到在 Spring MVC 控制器中定义的 RestEasy ClinetInterceptor 中。

我使用了注释。但是我仍然在 ClientInterceptor 内的 Autowired Session Scoped bean 上获得 NPE ..

如何解决这个问题呢 ?

4

1 回答 1

4

要在单例 bean/原型范围 bean 中注入会话范围 bean,会话范围 bean 应该使用范围代理声明为 Spring 注入 bean 代理作为 bean 的占位符。

会话作用域 bean 可以通过以下方式声明为作用域代理,

在 XML 声明中,

 <bean ... scope="session"> 
   <aop:scoped-proxy/> 
 </bean> 

如果您使用注释,

@Scope(value="session",proxyMode= ScopedProxyMode.TARGET_CLASS)

代理模式提供有关生成哪种类型的代理的信息,基于接口/基于类。

于 2013-06-25T13:30:33.147 回答