【发布时间】:2015-07-13 16:59:19
【问题描述】:
我想在通知之前在 spring AOP 中获取响应对象。如果会话无效,我想重定向到登录页面,但无法在 Before 通知方法中获取 HttpServletResponse 对象。
尝试了以下方式。
@Autowired
private HttpServletResponse response;
public void setResponse(HttpServletResponse response) {
this.response = response;
}
堆栈跟踪:
caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: javax.servlet.http.HttpServletResponse com.****.****.aspect.LogProvider.response; nested exception is
org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [javax.servlet.http.HttpServletResponse] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:506)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:284)
... 33 more
任何帮助将不胜感激。
【问题讨论】:
-
不是自动装配,你试过这个吗?
HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.currentRequestAttributes()).getRequest(); -
感谢您的回复。我会试试这个
-
我需要 HttpServletResponse 对象。
-
抱歉,误读了您的问题。
-
使用更适合此任务的
Filter或HandlerInterceptor。或者使用 Spring Security,它可以为您处理更多事情。
标签: spring spring-mvc servlets spring-aop