当前位置: 代码网 > it编程>编程语言>Java > AOP编程的基本概念与idea编辑器的配合体验过程

AOP编程的基本概念与idea编辑器的配合体验过程

2025年09月15日 Java 我要评论
初始化一个基础的 aop 程序// 作为演示程序,没有更具体的方法体@slf4j@component@aspectpublic class tryaspect { @before("execut

初始化一个基础的 aop 程序

// 作为演示程序,没有更具体的方法体

@slf4j
@component
@aspect
public class tryaspect {

    @before("execution(* biz.baijing.service.impl.deptserviceimpl.*(..))")      // * 任意方法 , .. 形参任意
    public void before(){
        log.info("before ...");
    }

    public void after(){
        log.info("after ...");
    }

    public void around(){
        log.info("around before ...");

        // 调用目标方法


        log.info("around after");
    }

    public void afterreturning(){
        log.info("afterreturning ...");
    }

    public void afterthrowing(){
        log.info("after throwing ...");
    }

}

before

注意编辑器这个位置的 m 的变化。

点击 m 提示了 

@before("execution(* biz.baijing.service.impl.deptserviceimpl.*(..))") 

切面目标的方法。

around

before 是半圆;around 是完整的圆形。

同样点击会出现 execution 的指向的目标方法

注解: m = methods

对 around 方法,完善之后

    @around("execution(* biz.baijing.service.impl.deptserviceimpl.*(..))")
    public object around(proceedingjoinpoint proceedingjoinpoint) throws throwable{
        log.info("around before ...");

        // 调用目标方法
        object proceed = proceedingjoinpoint.proceed();

        log.info("around after");
        return proceed;
    }

advise — 通知

方法体,是抽取的一组公共的实现逻辑。

        log.info("around before ...");

        // 调用目标方法
        object proceed = proceedingjoinpoint.proceed();

        log.info("around after");
        return proceed;

pointcut — 切入点

方法实际针对的目标方法的引入,是aop方法和目标类方法的连接;

通过切入点表达式关联。

"execution(* biz.baijing.service.impl.deptserviceimpl.*(..))"

备注: *  : 所有 deptserviceimpl 下的方法 ; .. : 形参任意。

acpect — 切面

advise 和 pointcut 的连接。

    @around("execution(* biz.baijing.service.impl.deptserviceimpl.*(..))")
    public object around(proceedingjoinpoint proceedingjoinpoint) throws throwable{
        log.info("around before ...");

        // 调用目标方法
        object proceed = proceedingjoinpoint.proceed();

        log.info("around after");
        return proceed;
    }

描述这个方法的类,就叫: 切面类。

@slf4j
@component
@aspect
public class tryaspect {

    @before("execution(* biz.baijing.service.impl.deptserviceimpl.*(..))")      // * 任意方法 , .. 形参任意
    public void before(){
        log.info("before ...");
    }

    public void after(){
        log.info("after ...");
    }

    @around("execution(* biz.baijing.service.impl.deptserviceimpl.*(..))")
    public object around(proceedingjoinpoint proceedingjoinpoint) throws throwable{
        log.info("around before ...");

        // 调用目标方法
        object proceed = proceedingjoinpoint.proceed();

        log.info("around after");
        return proceed;
    }

    public void afterreturning(){
        log.info("afterreturning ...");
    }

    public void afterthrowing(){
        log.info("after throwing ...");
    }

}

tryaspect —— 切面类。

target — 目标对象

biz.baijing.service.impl.deptserviceimpl

deptserviceimpl —— 就是目标对象。

joinpoint — 连接点

被 aop 控制的对象方法,即:

biz.baijing.service.impl.deptserviceimpl

下的所有方法

这里被 红色 m 标识的方法就是 joinpoint 。

结果

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com