spring拦截器为什么不起作用了?

本文探讨了Spring框架中AOP拦截器的配置问题,具体为如何正确配置拦截器以实现对所有Action的拦截。文章提供了一段具体的spring.xml配置示例,并描述了期望与实际效果之间的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

spring.xml里的一段代码:
<bean id="menu_log"
class="com.dne.kiss.admin.menu_log.Menu_Log_Interceptor">
<property name="menuService" ref="menuService"></property>
</bean>
<bean id="menu_log_proxy"
class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyTargetClass">
<value>true</value>
</property>
<property name="interceptorNames">
<list>
<value>menu_log</value>
</list>
</property>
<property name="target">
<ref bean="/login" />
</property>
</bean>

拦截器类:
package com.dne.kiss.admin.menu_log;

import java.lang.reflect.Method;

import org.springframework.aop.MethodBeforeAdvice;

import com.dne.kiss.admin.service.IMenuService;

public class Menu_Log_Interceptor implements MethodBeforeAdvice {
private IMenuService menuService;

public IMenuService getMenuService() {
return menuService;
}

public void setMenuService(IMenuService menuService) {
this.menuService = menuService;
}

public void before(Method arg0, Object[] arg1, Object arg2)
throws Throwable {
// TODO Auto-generated method stub
System.out.println("---------------------------------haha,你被我拦截了");
}

}

我的意图是拦截所有的action,也就是spring.xml中所有以'/'开头的bean.现在我配的只拦截/login.但是这段代码根本不起作用,请问高手这是这么回事?能指点下么?
Spring框架中的拦截器(Interceptor)是一种在处理请求之前或之后添加额外功能的能力。它主要用于AOP(面向切面编程)场景,允许开发者对业务流程的某些关键点进行预处理或后处理操作,比如日志记录、权限检查、事务管理等。 在Spring中,拦截器通常是通过`HandlerInterceptor`接口来实现的,这个接口有两个方法:`preHandle()` 和 `postHandle()` 分别对应请求处理前和处理后的钩子。如果你想要自定义拦截器,你需要创建一个实现了`HandlerInterceptor`接口的类,并在配置文件中注册这个拦截器,例如: ```java @Configuration public class MyInterceptorConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new MyCustomInterceptor()) .addPathPatterns("/**"); // 指定拦截的所有URL路径 } } ``` `MyCustomInterceptor` 类中可以编写具体的拦截逻辑: ```java @Component public class MyCustomInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 请求处理前的操作... return true; // 返回true继续处理,false中断处理 } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { // 请求处理后的行为... } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // 异常处理或其他完成后的清理工作... } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值