专栏首页行者常至aop-aspectJ的通知不被执行

aop-aspectJ的通知不被执行

首先,确保配置文件都已经是正确的。

1、首先,把所写的通知所在的类交于spring来管理

<context:component-scan base-package="me.sui.user.aop" />

注意,其头部文件:

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd  ">

2、然后,应该还有一条

<aop:aspectj-autoproxy/>

之所以没有和上面放在一起,等会再说。

3、切面通知类

package me.sui.user.aop;

import javax.servlet.http.HttpServletRequest;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;

/**
 * 注册切面
 * @author qubianzhong
 *
 */
@Aspect
@Component
public class RegisterAspect {

    /**
     * studentService
     */
    @Autowired
    @Qualifier("studentService")
    private StudentService studentService;
    /**
     * 后置通知,用户注册成功后,将注册数据信息发送到神策数据进行分析
     * @param joinPoint 接入点
     * @param result 目标方法的返回结果
     */
    @AfterReturning(value="execution(* me.sui.user.rest.StudentRestController.register(..))", returning = "result") 
    public void afterMethod(JoinPoint joinPoint,Object result){
        if((boolean) result){

        }
    }
}

4、以上都准备妥当后,通知还不可以被执行,我当时是因为下面这几个坑:

一、我所拦截的类,即被切的类,是个servlet;只有当切面类和被切面类都被spring来管理的时候,通知才可以使用。


二、基于第一条,如果你换成拦截器也是不行的。


三、如果你使用的是springMVC,你所拦截的切面类也是个controller,但是,还是不行,可能就是因为你把

<aop:aspectj-autoproxy/>

也放在了application.xml中了。可能是springmvc的bug吧。你把

<aop:aspectj-autoproxy/>

放到DispatcherServlet所对应的**-servlet.xml配置文件中,就可以了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • SpringBoot 中 @ConfigurationProperties 配置后 apollo 自动刷新

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    qubianzhong
  • java中的单例模式浅析

    Singleton模式主要作用是保证在java应用程序中,一个类class只有一个实例存在。在很多操作中,比如建立目录、数据库连接都需要这样的单线程操作。

    qubianzhong
  • 009.多线程-AtomicInteger

    版权声明:本文为博主原创文章,允许转载,请标明出处。

    qubianzhong
  • Spring笔记(二)

    1.注解ioc 1.开启注解扫描 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www...

    lwen
  • Spring 中基于 AOP 的 XML操作方式

    Spring 框架的一个关键组件是面向方面的编程(AOP)框架。面向方面的编程需要把程序逻辑分解成不同的部分称为所谓的关注点。跨一个应用程序的多个点的功能被称为...

    Jerry Wang
  • Spring(3)——AOP

    作用:在程序运行期间,不修改源码对已有方法进行增强。 优势:1减少重复代码,2提高开发效率,3维护方便

    羊羽shine
  • java之aop

    1.AOP:aspect orientied programming 面向切面编程。就是横向编程。

    Vincent-yuan
  • day34_Spring学习笔记_02

    1.2.2.2、切面类   MyAspect.java的代码同上 1.2.1.2、切面类 代码,这里不再赘述!

    黑泽君
  • Spring AOP的三种实现方式

    参考:https://docs.spring.io/spring/docs/current/spring-framework-reference/core.ht...

    week
  • 《SpringMVC从入门到放肆》八、SpringMVC注解式开发(基本配置)

    一般情况下,我们开发时,一个Controller类就是一个模块,而里面的所有处理器方法就是该模块的不同业务功能。这个时候,我们Controller与Contro...

    I Tech You_我教你

扫码关注云+社区

领取腾讯云代金券