`

不错的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_学习小结 Spring_AOP_学习小结 Spring_AOP_学习小结

    1. Joinpoint(连接点):在Spring AOP中,Joinpoint指的是程序执行的某个特定点,如方法的执行。在Spring中,Joinpoint主要指的是方法的调用。 2. Advice(通知):Advice是在特定Joinpoint上执行的代码片段。...

    AOP小结

    **AOP小结** 面向切面编程(Aspect-Oriented Programming,简称AOP)是一种编程范式,旨在解决软件开发中的横切关注点问题。在传统的面向对象编程中,业务逻辑与系统服务(如日志、事务管理、权限检查等)往往交织...

    AOP的实现机制

    **3.1.3 小结** 动态代理的主要优点在于其灵活性,能够轻松地为任何实现了接口的类添加额外的行为。但需要注意的是,只有实现了接口的类才能使用动态代理。 ##### 3.2 动态字节码生成 动态字节码生成技术允许在...

    Spring框架系列(4) - 深入浅出Spring核心之面向切面编程(AOP).doc

    **AOP使用问题小结** 1. **切入点的声明规则**:切点通常由`@Pointcut`注解定义,可以基于方法、包、注解等条件。 2. **增强通知的顺序**:Spring默认按照方法的顺序执行通知,`@Before`先于`@AfterReturning`,`@...

    spring学习小结

    【Spring 框架学习小结】 Spring 是一个流行的 Java 应用开发框架,它以其控制反转(Inversion of Control, IOC)和面向切面编程(Aspect-Oriented Programming, AOP)为核心特性,被誉为轻量级框架。下面将详细...

    spring 学习小结笔记

    在Spring中,切面由切入点(Pointcut)和通知(Advice)组成,切入点定义了哪些方法会被拦截,通知定义了拦截后要执行的行为。我们可以使用注解或XML配置来定义切面。 此外,Spring还提供了众多其他功能,如MVC框架...

    SpringBoot使用AOP+注解实现简单的权限验证的方法

    SpringBoot 使用 AOP+注解实现简单的权限验证的方法 ...小结 使用 AOP+注解可以实现简单的权限验证,确保应用程序的安全性。本文介绍了如何使用 SpringAOP 框架和自定义注解来实现权限验证,以确保应用程序的安全性。

    Spring框架小结

    Spring框架作为Java开发领域中最受欢迎的企业级应用程序框架之一,其核心特性包括控制反转(Inversion of Control, IoC)、依赖注入(Dependency Injection, DI)、面向切面编程(Aspect Oriented Programming, AOP...

    MyEclipse 6 Java 开发中文教程第十章

    #### 10.6 小结 本章介绍了如何使用MyEclipse 6来开发基于Spring框架的应用程序,涵盖了从基本的Spring配置到高级的AOP和数据库集成技术。 #### 10.7 参考资料 - **MyEclipse生成的Spring+Hibernate无法保存数据...

    Spring配置的5种方式

    #### 五、小结 Spring框架提供了丰富的事务管理方式,使得开发者可以根据项目需求选择最适合自己的方案。通过本文的介绍,相信读者已经对Spring事务配置的五种方式有了更深入的理解。在实际开发过程中,开发者可...

    Spring-Reference_zh_CN(Spring中文参考手册)

    14.5.2. 小结 14.6. 文档视图(PDF/Excel) 14.6.1. 简介 14.6.2. 配置和安装 14.6.2.1. 文档视图定义 14.6.2.2. Controller 代码 14.6.2.3. Excel视图子类 14.6.2.4. PDF视图子类 14.7. JasperReports 14.7.1. 依赖...

    Spring中文帮助文档

    14.5.2. 小结 14.6. 文档视图(PDF/Excel) 14.6.1. 简介 14.6.2. 配置和安装 14.7. JasperReports 14.7.1. 依赖的资源 14.7.2. 配置 14.7.3. 构造ModelAndView 14.7.4. 使用子报表 14.7.5. 配置Exporter的...

    SSM集成应用

    **12.5 SpringMVC小结** - **优势**:清晰的架构、易于理解和使用。 - **自由度和扩展性**:通过各种配置和自定义实现高度的灵活性。 #### 补充 **13.1 前台传method的方法名,后台通过反射调用方法** 通过动态...

    Spring 2.0 开发参考手册

    14.5.2. 小结 14.6. 文档视图(PDF/Excel) 14.6.1. 简介 14.6.2. 配置和安装 14.7. JasperReports 14.7.1. 依赖的资源 14.7.2. 配置 14.7.3. 构造ModelAndView 14.7.4. 使用子报表 14.7.5. 配置Exporter的...

    Spring API

    14.5.2. 小结 14.6. 文档视图(PDF/Excel) 14.6.1. 简介 14.6.2. 配置和安装 14.7. JasperReports 14.7.1. 依赖的资源 14.7.2. 配置 14.7.3. 构造ModelAndView 14.7.4. 使用子报表 14.7.5. 配置Exporter的...

    spring chm文档

    14.5.2. 小结 14.6. 文档视图(PDF/Excel) 14.6.1. 简介 14.6.2. 配置和安装 14.7. JasperReports 14.7.1. 依赖的资源 14.7.2. 配置 14.7.3. 构造ModelAndView 14.7.4. 使用子报表 14.7.5. 配置Exporter的...

    Spring Security 2.0.x完全中文参考文档

    小结** 对上述组件的功能进行了简要总结。 - **5.3. 验证** - **5.3.1. ExceptionTranslationFilter** 用于处理认证过程中发生的异常。 - **5.3.2. AuthenticationEntryPoint** 定义了当用户尝试访问受...

    spring-security 官方文档 中文版

    - **小结**:这些组件共同构成了 Spring Security 的核心架构,提供了强大的身份验证和授权能力。 **5.3 验证** - **什么是 Spring Security 的验证呢?** - Spring Security 的验证机制允许开发者自定义认证过程...

    spring security3.0 spring权限问题

    - **5.2.4 小结** 这些组件共同协作,实现了用户认证和授权的核心逻辑。 **5.3 验证** - **5.3.1 ExceptionTranslationFilter** 当认证失败时触发的过滤器。 - **5.3.2 AuthenticationEntryPoint** 当用户...

Global site tag (gtag.js) - Google Analytics