iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >springboot aop里的@Pointcut()的配置方式
  • 785
分享到

springboot aop里的@Pointcut()的配置方式

2024-04-02 19:04:59 785人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录SpringBoot aop里的@Pointcut()的配置springboot aop @Pointcut的用法springboot aop里的@Pointcut()的配置

springboot aop里的@Pointcut()的配置


@Pointcut("execution(public * com.wangzhou.newboot.exception.TestExceptionController.test(String,String))")

com.wangzhou.newboot.exception是TestExceptionController类的全路径,test(String,String)是TestExceptionController类下的

test(String s,String d)方法

如果要忽略test方法的入参,所有test方法将被aop


@Pointcut("execution(public * com.wangzhou.newboot.exception.TestExceptionController.test(..))")

如果忽略TestExceptionController的方法,所有TestExceptionController下的方法将被aop


@Pointcut("execution(public * com.wangzhou.newboot.exception.TestExceptionController.*(..))")

如果忽略exception路径下的所有类,不包括exception的子路径


@Pointcut("execution(public * com.wangzhou.newboot.exception.*.*(..))")

如果忽略newboot路径下的所有类,不包括newboot的子路径比如exception里的类,


@Pointcut("execution(public * com.wangzhou.newboot..*.*(..))")

springboot aop @Pointcut的用法

格式:


execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern)throws-pattern?) 

括号中各个pattern分别表示:

  • 修饰符匹配(modifier-pattern?)
  • 返回值匹配(ret-type-pattern)可以为*表示任何返回值,全路径的类名等
  • 类路径匹配(declaring-type-pattern?)
  • 方法名匹配(name-pattern)可以指定方法名 或者 *代表所有, set* 代表以set开头的所有方法
  • 参数匹配((param-pattern))可以指定具体的参数类型,多个参数间用“,”隔开,各个参数也可以用“*”来表示匹配任意类型的参数,如(String)表示匹配一个String参数的方法;(*,String) 表示匹配有两个参数的方法,第一个参数可以是任意类型,而第二个参数是String类型;可以用(..)表示零个或多个任意参数
  • 异常类型匹配(throws-pattern?)
  • 其中后面跟着“?”的是可选项

现在来看看几个例子:


1)execution(* *(..))  
//表示匹配所有方法  
2)execution(public * com. savage.service.UserService.*(..))  
//表示匹配com.savage.server.UserService中所有的公有方法  
3)execution(* com.savage.server..*.*(..))  
//表示匹配com.savage.server包及其子包下的所有方法 

在Spring 2.0中,Pointcut的定义包括两个部分:Pointcut表示式(expression)和Pointcut签名(signature)


//Pointcut表示式
@Pointcut("execution(* com.savage.aop.MessageSender.*(..))")
//Point签名
private void log(){} 

然后要使用所定义的Pointcut时,可以指定Pointcut签名

如下:


@Before("og()")

这种使用方式等同于以下方式,直接定义execution表达式使用


@Before("execution(* com.savage.aop.MessageSender.*(..))")

Pointcut定义时,还可以使用&&、||、! 这三个运算


@Pointcut("execution(* com.savage.aop.MessageSender.*(..))")
private void logSender(){}
@Pointcut("execution(* com.savage.aop.MessageReceiver.*(..))")
private void logReceiver(){}
@Pointcut("logSender() || logReceiver()")
private void logMessage(){}

这个例子中,logMessage()将匹配任何MessageSender和MessageReceiver中的任何方法。

还可以将一些公用的Pointcut放到一个类中,以供整个应用程序使用,如下:


package com.savage.aop;
import org.aspectj.lang.annotation.*;
public class Pointcuts {
@Pointcut("execution(* *Message(..))")
public void logMessage(){}
@Pointcut("execution(* *Attachment(..))")
public void logAttachment(){}
@Pointcut("execution(* *Service.*(..))")
public void auth(){}
}

在使用上面定义Pointcut时,指定完整的类名加上Pointcut签名就可以了,如:


package com.savage.aop;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.*;
@Aspect
public class LogBeforeAdvice {
@Before("com.sagage.aop.Pointcuts.logMessage()")
public void before(JoinPoint joinPoint) {
System.out.println("Logging before " + joinPoint.getSignature().getName());
}
}

当基于XML Sechma实现Advice时,如果Pointcut需要被重用,可以使用<aop:pointcut></aop:pointcut>来声明Pointcut,然后在需要使用这个Pointcut的地方,用pointcut-ref引用就行了,如:


<aop:config>
  <aop:pointcut id="log" expression="execution(* com.savage.simplespring.bean.MessageSender.*(..))"/>
  <aop:aspect id="logging" ref="logBeforeAdvice">
    <aop:before pointcut-ref="log" method="before"/>
    <aop:after-returning pointcut-ref="log" method="afterReturning"/>
  </aop:aspect>
</aop:config>

另外,除了execution表示式外,还有within、this、target、args等Pointcut表示式

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

--结束END--

本文标题: springboot aop里的@Pointcut()的配置方式

本文链接: https://www.lsjlt.com/news/158227.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • springboot aop里的@Pointcut()的配置方式
    目录springboot aop里的@Pointcut()的配置springboot aop @Pointcut的用法springboot aop里的@Pointcut()的配置 ...
    99+
    2022-11-12
  • springboot的pom.xml配置方式
    目录springboot的pom.xml配置springboot 常用pom总结springboot的pom.xml配置 <name>springboot</nam...
    99+
    2022-12-23
    springboot pom.xml配置 springboot配置pom.xml springboot pom.xml
  • SpringBoot 动态配置Profile环境的方式
    下面的例子是通过修改开发环境和生产环境的动态配置的端口号的示例: 开发环境端口号是 8081 生产环境端口号是 8082 springboot的配置方式 springboot的配置...
    99+
    2022-11-12
  • Springboot之restTemplate的配置及使用方式
    目录基础配置以下为进阶配置和使用1 场景2 依赖3 配置4 使用4.1 GET请求4.2 POST请求4.3 上传文件在springboot项目中,可以直接注入RestTemplat...
    99+
    2022-11-12
  • springboot之端口设置和contextpath的配置方式
    目录端口设置和contextpath的配置端口设置ContextPath配置Springboot中添加contextPathprofile配置端口设置和contextpath的配置 ...
    99+
    2022-11-13
  • AOP之事务管理<aop:advisor>的两种配置方式
    目录AOP事务管理<aop:advisor>两种配置方式方式一方式二hibernate事务配置Aop aop:advisor模式AOP事务管理<aop:adviso...
    99+
    2022-11-12
  • SpringBoot 属性配置中获取值的方式
    目录SpringBoot 属性配置中获取值首先,定义一个实体类去写属性测试和生产区分SpringBoot 获取值和配置文件1、@ConfigurationProperties(pre...
    99+
    2022-11-13
  • spring中aop的xml配置方法实例详解
    前言AOP:即面向切面编程,是一种编程思想,OOP的延续。在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等等。aop,面向切面编程的目标就是分离关注点,比如:一个骑士只需要关注守护安全,或者远征,而骑士辉煌一生的事迹由谁...
    99+
    2023-05-31
    spring aop xml配置
  • springboot结合maven配置不同环境的profile方式
    目录springboot结合maven配置不同环境的profile1、在spring-boot中新建配置文件2、在application.yml中增加属性3、在pom.xml中添加不...
    99+
    2022-11-12
  • SpringBoot加载配置文件的实现方式总结
    目录一、简介二、代码实践2.1、通过@value注解实现参数加载2.2、通过@ConfigurationProperties注解实现参数加载2.3、通过@PropertySource...
    99+
    2022-11-13
  • Springboot redis整合配置的方法
    本文小编为大家详细介绍“Springboot redis整合配置的方法”,内容详细,步骤清晰,细节处理妥当,希望这篇“Springboot redis整合配置的方法”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1...
    99+
    2023-06-19
  • springboot整合多数据源配置的方式是什么
    这篇文章将为大家详细讲解有关springboot整合多数据源配置的方式是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。简介主要介绍两种整合方式,分别是 springboot+mybati...
    99+
    2023-06-22
  • springboot yml配置文件值的注入方式是什么
    这篇文章跟大家分析一下“springboot yml配置文件值的注入方式是什么”。内容详细易懂,对“springboot yml配置文件值的注入方式是什么”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够...
    99+
    2023-06-26
  • Springboot启动不检查JPA的数据源配置方式
    目录Springboot启动不检查JPA的数据源配置1.问题2.方案设置Springboot项目忽略JPA启动解决方案Springboot启动不检查JPA的数据源配置 1.问题 有时...
    99+
    2022-11-12
  • SpringBoot加密配置文件的SQL账号密码方式
    目录加密配置文件的SQL账号密码1、在Maven项目中引入依赖2、同时需要在application.yml配置文件中先配置密码3、可以在测试用例中4、最后在配置文件中放入加密后的字符...
    99+
    2022-11-13
  • SpringBoot属性配置中获取值的方式是什么
    这篇文章主要介绍“SpringBoot属性配置中获取值的方式是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot属性配置中获取值的方式是什么”文章能帮助大家解决问题。Spring...
    99+
    2023-06-29
  • SpringBoot获取配置文件内容的方式有哪些
    这篇文章主要介绍“SpringBoot获取配置文件内容的方式有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot获取配置文件内容的方式有哪些”文章能帮助大家解决问题。前言现有配置...
    99+
    2023-07-05
  • springboot 配置文件里部分配置未生效的解决
    springboot 配置文件里部分配置未生效 最近用springboot搭了个项目,上线过段时间就会出现卡死,猜测是数据库连接池的连接被占满,用的连接池是druid,于是给项目加上...
    99+
    2022-11-12
  • springboot配置文件配置项前缀为0的数字特殊处理方式
    目录配置文件配置项前缀为0的数字处理问题解决方法源码类分析yml配置文件中写以数字0开头的值记一次springboot踩的坑配置文件配置项前缀为0的数字处理 问题 spring bo...
    99+
    2022-11-13
  • springboot jpa配置的方法是什么
    在Spring Boot中配置JPA的方法有以下几种:1. 使用application.properties文件:在applicat...
    99+
    2023-09-21
    springboot jpa
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作