通配符的应用

2023-11-12

我们使用通配符描述切入点,主要的目的就是简化之前的配置,具体都有哪些通配符可以使用?

  • *:单个独立的任意符号,可以独立出现,也可以作为前缀或者后缀的匹配符出现

    execution(public * com.itheima.*.UserService.find*(*))

    匹配com.itheima包下的任意包中的UserService类或接口中所有find开头的带有一个参数的方法

  • ..:多个连续的任意符号,可以独立出现,常用于简化包名与参数的书写

    execution(public User com..UserService.findById(..))

    匹配com包下的任意包中的UserService类或接口中所有名称为findById的方法

  • +:专用于匹配子类类型

    execution(* *..*Service+.*(..))

    这个使用率较低,描述子类的,咱们做JavaEE开发,继承机会就一次,使用都很慎重,所以很少用它。*Service+,表示所有以Service结尾的接口的子类。

接下来,我们把案例中使用到的切入点表达式来分析下:

 

execution(void com.itheima.dao.BookDao.update())
匹配接口,能匹配到
execution(void com.itheima.dao.impl.BookDaoImpl.update())
匹配实现类,能匹配到
execution(* com.itheima.dao.impl.BookDaoImpl.update())
返回值任意,能匹配到
execution(* com.itheima.dao.impl.BookDaoImpl.update(*))
返回值任意,但是update方法必须要有一个参数,无法匹配,要想匹配需要在update接口和实现类添加参数
execution(void com.*.*.*.*.update())
返回值为void,com包下的任意包三层包下的任意类的update方法,匹配到的是实现类,能匹配
execution(void com.*.*.*.update())
返回值为void,com包下的任意两层包下的任意类的update方法,匹配到的是接口,能匹配
execution(void *..update())
返回值为void,方法名是update的任意包下的任意类,能匹配
execution(* *..*(..))
匹配项目中任意类的任意方法,能匹配,但是不建议使用这种方式,影响范围广
execution(* *..u*(..))
匹配项目中任意包任意类下只要以u开头的方法,update方法能满足,能匹配
execution(* *..*e(..))
匹配项目中任意包任意类下只要以e结尾的方法,update和save方法能满足,能匹配
execution(void com..*())
返回值为void,com包下的任意包任意类任意方法,能匹配,*代表的是方法
execution(* com.itheima.*.*Service.find*(..))
将项目中所有业务层方法的以find开头的方法匹配
execution(* com.itheima.*.*Service.save*(..))
将项目中所有业务层方法的以save开头的方法匹配

后面两种更符合我们平常切入点表达式的编写规则

书写技巧

对于切入点表达式的编写其实是很灵活的,那么在编写的时候,有没有什么好的技巧让我们用用:

  • 所有代码按照标准规范开发,否则以下技巧全部失效

  • 描述切入点通==常描述接口==,而不描述实现类,如果描述到实现类,就出现紧耦合了

  • 访问控制修饰符针对接口开发均采用public描述(==可省略访问控制修饰符描述==

  • 返回值类型对于增删改类使用精准类型加速匹配,对于查询类使用*通配快速描述

  • ==包名==书写==尽量不使用..匹配==,效率过低,常用*做单个包描述匹配,或精准匹配

  • ==接口名/类名==书写名称与模块相关的==采用*匹配==,例如UserService书写成*Service,绑定业务层接口名

  • ==方法名==书写以==动词==进行==精准匹配==,名词采用匹配,例如getById书写成getBy,selectAll书写成selectAll

  • 参数规则较为复杂,根据业务方法灵活调整

  • 通常==不使用异常==作为==匹配==规则

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通配符的应用 的相关文章

  • 如何找到给定字符串的最长重复子串

    我是java新手 我被分配寻找字符串的最长子字符串 我在网上研究 似乎解决这个问题的好方法是实现后缀树 请告诉我如何做到这一点或者您是否有任何其他解决方案 请记住 这应该是在 Java 知识水平较低的情况下完成的 提前致谢 附 测试仪字符串
  • 在 HTTPResponse Android 中跟踪重定向

    我需要遵循 HTTPost 给我的重定向 当我发出 HTTP post 并尝试读取响应时 我得到重定向页面 html 我怎样才能解决这个问题 代码 public void parseDoc final HttpParams params n
  • 制作一个交互式Windows服务

    我希望我的 Java 应用程序成为交互式 Windows 服务 用户登录时具有 GUI 的 Windows 服务 我搜索了这个 我发现这样做的方法是有两个程序 第一个是服务 第二个是 GUI 程序并使它们进行通信 服务将从 GUI 程序获取
  • Final字段的线程安全

    假设我有一个 JavaBeanUser这是从另一个线程更新的 如下所示 public class A private final User user public A User user this user user public void
  • 无法展开 RemoteViews - 错误通知

    最近 我收到越来越多的用户收到 RemoteServiceException 错误的报告 我每次给出的堆栈跟踪如下 android app RemoteServiceException Bad notification posted fro
  • 反射找不到对象子类型

    我试图通过使用反射来获取包中的所有类 当我使用具体类的代码 本例中为 A 时 它可以工作并打印子类信息 B 扩展 A 因此它打印 B 信息 但是当我将它与对象类一起使用时 它不起作用 我该如何修复它 这段代码的工作原理 Reflection
  • 路径中 File.separator 和斜杠之间的区别

    使用有什么区别File separator和一个正常的 在 Java 路径字符串中 与双反斜杠相反 平台独立性似乎不是原因 因为两个版本都可以在 Windows 和 Unix 下运行 public class SlashTest Test
  • 无法解析插件 Java Spring

    我正在使用 IntelliJ IDEA 并且我尝试通过 maven 安装依赖项 但它给了我这些错误 Cannot resolve plugin org apache maven plugins maven clean plugin 3 0
  • 十进制到八进制的转换[重复]

    这个问题在这里已经有答案了 可能的重复 十进制转换错误 https stackoverflow com questions 13142977 decimal conversion error 我正在为一个类编写一个程序 并且在计算如何将八进
  • 如何为俚语和表情符号构建正则表达式 (regex)

    我需要构建一个正则表达式来匹配俚语 即 lol lmao imo 等 和表情符号 即 P 等 我按照以下示例进行操作http www coderanch com t 497238 java java Regular Expression D
  • 在两个活动之间传输数据[重复]

    这个问题在这里已经有答案了 我正在尝试在两个不同的活动之间发送和接收数据 我在这个网站上看到了一些其他问题 但没有任何问题涉及保留头等舱的状态 例如 如果我想从 A 类发送一个整数 X 到 B 类 然后对整数 X 进行一些操作 然后将其发送
  • getResourceAsStream() 可以找到 jar 文件之外的文件吗?

    我正在开发一个应用程序 该应用程序使用一个加载配置文件的库 InputStream in getClass getResourceAsStream resource 然后我的应用程序打包在一个 jar文件 如果resource是在里面 ja
  • 如何在控制器、服务和存储库模式中使用 DTO

    我正在遵循控制器 服务和存储库模式 我只是想知道 DTO 在哪里出现 控制器应该只接收 DTO 吗 我的理解是您不希望外界了解底层域模型 从领域模型到 DTO 的转换应该发生在控制器层还是服务层 在今天使用 Spring MVC 和交互式
  • AWS 无法从 START_OBJECT 中反序列化 java.lang.String 实例

    我创建了一个 Lambda 函数 我想在 API 网关的帮助下通过 URL 访问它 我已经把一切都设置好了 我还创建了一个application jsonAPI Gateway 中的正文映射模板如下所示 input input params
  • Eclipse Java 远程调试器通过 VPN 速度极慢

    我有时被迫离开办公室工作 这意味着我需要通过 VPN 进入我的实验室 我注意到在这种情况下使用 Eclipse 进行远程调试速度非常慢 速度慢到调试器需要 5 7 分钟才能连接到远程 jvm 连接后 每次单步执行断点 行可能需要 20 30
  • 使用Spring将war文件WEB-INF目录下的资源导入到applicationContext文件中

    我在我的项目中使用 Spring 框架 我想导入下面的所有 xml 资源 文件 WEB INF CustomerService spring integration Jobs applicationContext配置文件中war文件的目录
  • 如何从终端运行处理应用程序

    我目前正在使用加工 http processing org对于一个小项目 但是我不喜欢它附带的文本编辑器 我使用 vim 编写所有代码 我找到了 pde 文件的位置 并且我一直在从 vim 中编辑它们 然后重新打开它们并运行它们 重新加载脚
  • simpleframework,将空元素反序列化为空字符串而不是 null

    我使用简单框架 http simple sourceforge net http simple sourceforge net 在一个项目中满足我的序列化 反序列化需求 但在处理空 空字符串值时它不能按预期工作 好吧 至少不是我所期望的 如
  • 使用 JMF 创建 RTP 流时出现问题

    我正处于一个项目的早期阶段 需要使用 RTP 广播DataStream创建自MediaLocation 我正在遵循一些示例代码 该代码目前在rptManager initalize localAddress 出现错误 无法打开本地数据端口
  • Spring Boot @ConfigurationProperties 不从环境中检索属性

    我正在使用 Spring Boot 1 2 1 并尝试创建一个 ConfigurationProperties带有验证的bean 如下所示 package com sampleapp import java net URL import j

随机推荐

  • 一款经典的ThinkPhp6开发的CMS内容管理系统

    项目介绍 一款 PHP 语言基于 ThinkPhp6 x Layui MySQL等框架精心打造的一款模块化 插件化 高性能的前后端分离架构敏捷开发框架 可用于快速搭建前后端分离后台管理系统 本着简化开发 提升开发效率的初衷 框架自研了一套个
  • Oracle下载安装:

    一 Oracle老版本11g下载地址 https www oracle com cn database technologies microsoft windows html 二 安装 解压到同一目录 在解压文件夹中找到可执行文件 setu
  • angular快速入门教程

    angular 安装 1 安装node js 2 安装angular npm i g angular cli 3 创建项目 ng new 项目名 4 文件结构 e2e 测试目录 src index html 网站主页面 main ts 应用
  • React:主题切换

    效果图 useTheme import useState useEffect useRef from react const useTheme active theme gt const LOCAL KEY theme 如果浏览器存有 LO
  • VBA的常见语法整理

    1 for循环 2 字符串连接符 Dim i For i 1 To 10 Cells i 2 第 i 行 Next i 3 设定必须显式声明变量 Option Explicit 4 while循环 Dim j j 1 While Cells
  • GD32单片机USB HID模式连续发送多包数据,出现丢包现象

    项目背景 产品使用GD32F103单片机实现USB HID模式 周期发送数据包 在特定情况下 需要连续发送三包数据 测试发现 只接收到了最后一包数据 前面的数据丢失了 故障排查 原发送函数如下 再调用custom hid report se
  • volatile、ReentrantLock和synchronized保证线程可见性原理

    主存 工作内存 在了解什么是线程可见性前 我们先来简单了解下 Java内存模型 的主存 工作内存抽象概念 主存 存储的是一些共享资源的存储位置 例如静态变量等 工作内存 每个线程对应的栈内存对应的私有局部资源的存储位置 我们来分析一个小案例
  • 浅识:元组、字典和集合

    目录 一 轻量性列表 元组 一 了解 元组 二 简单的元组操作 三 可哈希对象 二 映射类型 字典 一 了解 字典 二 字典的操作 三 无序可变序列 集合 一 了解集合 二 集合操作与运算 一 轻量性列表 元组 一 了解 元组 列表的功能十
  • Mac下jdk的安装路径

    http hi baidu com liouyan9 blog item 78fdc009b97bdac63ac76377 html Mac下jdk的安装路径 2009 08 11 15 39 苹果系统已经包含完整的J2SE 其中就有JDK
  • Spring Cloud微服务技术栈学习(导读)

    目录标题 前言 微服务架构解决方案 什么是spring cloud 技术组件 概念区分 1 spring cloud alibaba与spring cloud netflix 2 微服务技术之间的关系 3 springcloud是通过htt
  • 单调栈理解

    文章目录 单调栈 什么是单调栈 模拟实现一个单调栈 一些例题 视野总和 下一个最大元素 单调栈 什么是单调栈 从名字上就听的出来 单调栈中存放的数据应该是有序的 所以单调栈也分为单调递增栈和单调递减栈 单调递增栈 单调递增栈就是从栈底到栈顶
  • 常见猫咪种类

    文章目录 中华田园猫 猫图秀 概况 产地血统 毛色特征 形态特征 性格特征 近种区别 饲养特点 适养人群 英短 猫图秀 概况 产地血统 毛色特征 形态特征 性格特征 近种区别 饲养特点 适养人群 美短 猫图秀 概况 产地血统 毛色特征 形态
  • 双目标定(一)单目标定与矫正的基本介绍

    1 单目相机标定 首先 任何标定都是用基于小孔模型的数学模型去近似相机模型 我们需要用fx f dx fy f dy 图像坐标系中的光心原点坐标 和可能的缩放因子ks 这5个相机内参数 切向畸变参数和径向畸变参数 共5 N个参数来 近似 整
  • iOS 图片处理学习: 实现点九切图

    先来一个例子 一张图片 保留中间 拉伸两边 看效果 原始图片 easy 处理后 调用代码 view backgroundColor UIColor white let imgViewWidth CGFloat 300 let imgView
  • Gvim插件

    plugin 编程相关 公共 taglist 相信无人不知其大名 用来提供单个源代码文件的函数列表之类的功能 最近在使用一个针对面向对象语言的类似插件 tagbar vim 也很不错 NERD commenter 提供快速注释 反注释代码块
  • DeepChem预测小分子溶解度

    在药开发中 根据化学式预测小分子的溶解度 是开发药物小分子时要考虑的非常重要的性质 如果一种药物的溶解度不够 你可能无法将足够的药物输送到患者的血液中产生治疗效果 我们需要的第一件事是一个真实分子的测量溶解度的数据集 DeepChem的核心
  • [ctfshow]入门2

    目录 web14 默认配置 web15 社会工程学 web16 探针泄露 web17 sql备份 wed18 js小游戏 web19 数据库泄露 web20 mbd文件 杂项5 杂项6 杂项6 杂项7 杂项8 杂项10 杂项11 隐写1 隐
  • feign 序列化_自定义 feign 反序列化时间字符格式

    feign client 默认配置类 默认的配置类为FeignClientsConfiguration 配置了解码和编码 当请求Feign Client的方法执行时会被 SynchronousMethodHandler 类中的 invoke
  • 网络带宽单位转换 — MB/s、Mb/s、Mbps、Mbit/s、Kbps

    1 bit s 和 bps 的区别 bit s 和 bps 都是一样的意思 bit per second 2 KB s 和 Kb s 的区别 大写 B 和小写 b KB s 和 Kb s 的意思不一样 KB s 中的 大 B 表示 Byte
  • 通配符的应用

    我们使用通配符描述切入点 主要的目的就是简化之前的配置 具体都有哪些通配符可以使用 单个独立的任意符号 可以独立出现 也可以作为前缀或者后缀的匹配符出现 execution public com itheima UserService fi