spring aop配置未生效

Posted 教主陈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring aop配置未生效相关的知识,希望对你有一定的参考价值。

声明一个注解

@Target({ElementType.METHOD})   
@Retention(RetentionPolicy.RUNTIME)   
@Documented
@Order(Ordered.HIGHEST_PRECEDENCE)
public @interface RequestLimit {
}

 

配置一个切面

@Aspect
@Component
public class RequestLimitAspect {
    
    @Resource
    private JdCloudRedisManager jdRedisManager;
    
    @Resource
    private JwStoreConfigDao jwStoreConfigDao;
    
    @Before(value="execution (* com.jw.store.controller.JwStoreController.*(..)) && @annotation(limit)")
    public void limitRequest(JoinPoint joinPoint, RequestLimit limit) throws Exception{
        if(getSwitch()) {
            Object[] args = joinPoint.getArgs();
            if(args==null || args.length == 0) {
                return;
            }
            HttpServletRequest request = null;
            for(int i=0; i<args.length; i++) {
                if(args[i] instanceof HttpServletRequest) {
                    request = (HttpServletRequest) args[i];
                    break;
                }
            }
            if (request == null) {
                return;
            }
            String clientIp = IpUtil.getIpAddr(request);
            String method_name =joinPoint.getSignature().getName();
            if (method_name != null && !method_name.equals("")) {
                executeLimitMethod(method_name, clientIp);
            }
        }
    }

 

配置aop动态代理

<!-- aop动态代理 -->
    <aop:aspectj-autoproxy proxy-target-class="false"/> 

 

但死活没有运行aop, 通过各种查找,原来是动态代理配置需要配置到spring mvc xml文件中

 

以上是关于spring aop配置未生效的主要内容,如果未能解决你的问题,请参考以下文章

SpringMVC中配aop拦截不生效,咋回事

Spring 嵌套方法AOP不生效问题

spring-aop代理的生效原理

SpringMVC中配aop拦截不生效,咋回事

Spring系列之AOP实现的两种方式

spring boot @Scheduled未生效原因