`

不错的AOP中pointcut小结

 
阅读更多
https://gitbook.cn/books/5b99fb4990f0e17e7b56b214/index.html

/*
    在任意public方法的执行时匹配
     */
    @Pointcut("execution (public * * (..)) ")
    private void anyPublicOperation(){}

    /*
    任何以do开头的函数
     */
    @Pointcut("execution (* do* (..)) ")
    private void anyDoOperation(){}

    /*
    Package下的任意连接点(方法)执行时匹配
    */
    @Pointcut("within (com.pubutech.example.aop.thinking.*)")
    private void inPackage(){}

    /*
    Package下或者子包下的任意连接点(方法)执行时匹配
     */
    @Pointcut("within (com.pubutech.example.aop.thinking..*)")
    private void inPackages(){}

    /*
    Package下或者子包下的任意public连接点(任意public方法)执行时匹配
     */
    @Pointcut("inPackages() && anyPublicOperation() ")
    private void inPackageAnyPublicOPeration(){}

    /*
    Package下或者子包下的任意public连接点(任意public方法)执行时匹配
    理论上 这里想告诉大家 within  target args 都没有我们都可以用execution 直接做到
    */
    @Pointcut("execution (public * com.pubutech.example.aop.thinking..*.*(..)) ")
    private void inPackageAnyPublicOPerationInexecution(){}


    /*
    Package下或者子包下的任意连接点(方法)执行时匹配
    */
    @Pointcut("execution(* com.pubutech.example.aop.thinking..*.*(..))")
    public void executioniInPackagesPointCut() {}

    /*
    Package下的任意连接点(方法)执行时匹配
    */
    @Pointcut("execution(* com.pubutech.example.aop.thinking.*.*(..))")
    public void executioniInPackagePointCut() {}

    /*
    实现接口的所有实体对象的所有方法执行
    */
    @Pointcut("target (com.pubutech.example.aop.interfacetest.IBussiness)")
    public void targetPointCut(){}

    /*
    接口的所有代理对象的所有方法执行,一般情况下和target一样,高深用法后面演示
    */
    @Pointcut("this (com.pubutech.example.aop.interfacetest.IBussiness)")
    public void thisPointCut(){}

    /*
    精确拿到方法执行传递的参数
    实际上  args参数我们可以用JAVA反射拿到,所以不用也是可以的,后面Around有案例
     */
    @Pointcut("execution(* com.pubutech.example.aop.interfacetest.BusinessImpl.doException(..)) && args(msg)")
    public void argsPointCut(Message msg){}

    /*
    类级别的注解 里面所有的函数执行时
    */
    @Pointcut("@within(org.springframework.stereotype.Component)")
    public void withinPointCut(){}

    /*
    函数传递的参数使用的注解对象
    RequestBody Controller里面的Mapping方法里面请求参数是JSON格式的注解,帮助大家理解函数参数注解
    @PostMapping(value = "/add")
    public ObjectResponse add(@RequestBody UserEntity user) {
     */
    @Pointcut("@args(org.springframework.web.bind.annotation.RequestBody)")
    public void aArgsPointCut(){}

    /*
    方法的注解所使用的
    Transactional   方法事务执行的注解,这边只是一个案例,帮助大家理解一下方法注解
    @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
    public void addRoleResources(Long roleId, String resourcesId) {
     */
    @Pointcut("@annotation(org.springframework.transaction.annotation.Transactional)")
    public void annotationPointcut() {
    }

    /*
    Spring 特有的bean操作
     */
    @Pointcut("bean(serviceImpl)")
    public void beanPointCut(){}
分享到:
评论

相关推荐

    Spring AOP Example – Pointcut , Advisor

    NULL 博文链接:https://tuoxinquyu.iteye.com/blog/1465200

    【Spring AOP】@Aspect结合案例详解(二): @Pointcut使用@within和within

    上文我们已讲完五种通知Advice注解,所以从本文开始介绍@Pointcut切点表达式,虽然Spring AOP的切点表达式尚未 全部实现 @AspectJ 的切点指示符,但是也已经足够多和灵活,本文主要介绍@Pointcut切点表达式中的@...

    详解Spring 框架中切入点 pointcut 表达式的常用写法

    主要介绍了详解Spring 框架中切入点 pointcut 表达式的常用写法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    spring学习之六“AOP使用spring静态配置文件的实现”

    NULL 博文链接:https://whp0731.iteye.com/blog/357015

    【Spring AOP】@Aspect结合案例详解(一): @Pointcut使用@annotation + 五种通知

    在微服务流行的当下,在使用SpringCloud/Springboot框架开发中,AOP使用的非常广泛,尤其是@Aspect注解方式当属最流行的,不止功能强大,性能也很优秀,还很舒心!所以本系列就结合案例详细介绍@Aspect方式的切面的...

    Spring AOP demo

    <aop:before method="beforeMethod" pointcut-ref="pointcut1"/> <aop:around method="aroundMethod" pointcut-ref="pointcut2"/> </aop:aspect> </aop:config> ``` Java 类 ```java public class LoggingAspect...

    基于java的企业级应用开发:AspectJ开发.ppt

    基于XML的声明式AspectJ是指通过XML文件... 基于XML的声明式AspectJ <aop:config>元素及其子元素如下: 小提示:图中灰色部分标注的元素即为常用的配置元素 XML文件中常用元素的配置方式如下: 基于XML的声明式AspectJ ...

    Spring AOP配置源码

    <aop:after-throwing method="exception" pointcut-ref="pointCut"/> aop异常通知 以上结合起来意思就是在调用com.spring.service包或子包下的所有方法之前或之后或抛出异常时依次调用id为logIntercepter的类中的...

    Spring AOP中文教程

    作为一种非侵略性的,轻型的AOP framework,你无需使用预编译器或其他的元标签,便可以在Java程序中使用它。这意味着开发团队里只需一人要对付AOP framework,其他人还是象往常一样编程。 AOP是很多直觉难以理解的...

    can't find referenced pointcut

    spring-framework-3.1.1.RELEASE jdk1.7 环境下 can't find referenced pointcut 问题解决 换了对应的jar文件即可 aspectjrt.jar aspectj-1.6.6.jar aspectjweaver.jar

    spring aop 详细介绍

    一. 准备工作 二. Spring -Aop入门 三. Spring-Aop 前置通知、后置通知、环绕通知、异常通知实现 四. Spring-Aop 之Pointcut+advice+Advisor 实现 五.Spring-Aop 引入的介绍

    pointcut表达式and or not在xml中配置

    好多朋友都不知道spring中的pointcut(切入点)的表达式在xml中是如何使用 and not or 的,小弟特地测试了无数次,终于搞定了

    aop的详细总结(包含例子)

    一、AOP 概念 二、AOP 种类 三、Spring AOP 代理原理 四、Spring AOP 通知类型 五、Spring AOP Pointcut 六、Spring AOP 中的Advisor其实就是Aspect 七、AOP ProxyFactory 八、自动代理

    如何使用Spring Boot的@Pointcut注解

    总的来说,@Pointcut注解是Spring Boot AOP中非常有用的一部分,它允许我们轻松地定义切点并应用通知来实现面向切面编程。通过这种方式,我们可以有效地在应用程序中实现横切关注点的功能,提高代码的可维护性和重用...

    Spring实现AOP的多种方式 切点函数

    里面包括4个例子:(1)Spring实现AOP方式之一:基于XML配置的Spring AOP (2)Spring实现AOP方式之二:使用注解配置 Spring AOP (3)Spring AOP : AspectJ Pointcut 切点 (4)Spring AOP : Advice 声明 (通知注解)

    SpringBoot中的AOP+自定义注解(源代码)

    SpringBoot 中的 Aop + 自定义注解 1. @AspectJ 1.1 `@AspectJ` 切面类 1.2 `@Pointcut` 创建切入点 1.3 通知 1.4 Spring AOP 和 AspectJ AOP 有什么区别? 2. 在 SpringBoot 中使用 Aop 功能 2.0 创建一个...

    AOP的实现机制

    AOP的实现机制,有文档、有测试实例. Java在JDK1.3后引入的动态代理机制,使我们可以在运行期动态的创建代理类。...被代理的类是AOP里所说的目标,InvocationHandler是切面,它包含了Advice和Pointcut。

    SpringBoot基于注解实现Aop

    在SpringBoot中演示实现了aop的使用方法,包括pointcut和Advice

    AOP 和 Aspect 注解切入 测试 Demo

    AOP 和 Aspect 注解切入 测试 Demo 1.ProxyFactory 基于 MethodBeforeAdvice、AfterReturningAdvice 利用 Spring Api...基于注解的形式:@Aspect、@PointCut、@Before、@Around、@After、@AfterRunning、@AfterThrowing

    Spring_2.x_AOP声明式配置详解

    Spring 2.x aop配置详解 Spring 2.x aop配置详解 Spring 2.x aop配置详解 Spring 2.x aop配置详解 Spring 2.x aop配置详解 Spring 2.x aop配置详解

Global site tag (gtag.js) - Google Analytics