【发布时间】:2014-02-19 15:55:28
【问题描述】:
我正在开发一个完整的 Spring 3.1 和 servlet 3.0 应用程序。但是我的拦截器有一个私有属性,范围为代理:
public class MyInterceptor extends HandlerInterceptorAdapter {
@Ressource
private UserSession userSession;
}
用户会话定义为:
@Component
@Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS)
public class UserSession implements Serializable {
....
}
在拦截器中使用此用户会话时,java 会为userSession 抛出一个NullPointerException。
我认为问题出在我的面向 javaconfig 的 spring 配置中:
@EnableWebMvc
@ComponentScan(basePackages = {"com.whatever"})
@Configuration
public class WebAppConfig extends WebMvcConfigurerAdapter {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new MyInterceptor());
}
...
}
问题在于拦截器是手动实例化的,因此没有会话代理机制的检测。因此,问题是:“如何让 Spring 在我的应用程序的 java 配置中检测并实例化范围会话代理 bean?
【问题讨论】:
标签: java spring session spring-mvc interceptor