AspectJ:一个方面内多个建议的执行顺序(优先级)

2023-12-29

类使用编译时编织。

想象一下我有一个方面类:

@Aspect
public class SecurityInterceptor {

    @Pointcut("within(@org.springframework.stereotype.Controller *)")
    public void beanAnnotatedWithController() {}

    @Pointcut("execution(public * *(..)) && args(*,httpReq)")
    public void publicMethods(HttpServletRequest httpReq) {}

    @Pointcut("beanAnnotatedWithController() && publicMethods(httpReq)")
    public void controllerMethods(HttpServletRequest httpReq) {}

    @Pointcut("execution(public * *(..)) && args(httpReq)")
    public void publicMethodsRequestOnly(HttpServletRequest httpReq) {}

    @Pointcut("beanAnnotatedWithController() && publicMethodsRequestOnly(httpReq)")
    public void controllerMethodsOneArg(HttpServletRequest httpReq) {}


    @Around(value = "controllerMethods(httpReq)")
    public Object populateSecurityContext(final ProceedingJoinPoint joinPoint, HttpServletRequest httpReq) throws Throwable {
        return popSecContext(joinPoint, httpReq);
    }

    @Around(value = "controllerMethodsOneArg(httpReq)")
    public Object populateSecurityContextOneArg(final ProceedingJoinPoint joinPoint, HttpServletRequest httpReq) throws Throwable {
        return popSecContext(joinPoint, httpReq);
    }

}

正确的使用方法是什么@DeclarePrecedence来确定执行顺序?


请阅读“建议优先顺序”段落语言语义 http://www.eclipse.org/aspectj/doc/next/progguide/semantics-advice.htmlAspectJ 文档的部分。

的优先级aspects可以显式声明,优先级单一方面的建议AFAIK 由文档中描述的规则确定并且无法更改。所以@DeclarePrecedence在这种情况下不会帮助您,只能更改方面文件中的建议顺序。

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

AspectJ:一个方面内多个建议的执行顺序(优先级) 的相关文章

  • Java new Date() 打印

    刚刚学习 Java 我知道这可能听起来很愚蠢 但我不得不问 System out print new Date 我知道参数中的任何内容都会转换为字符串 最终值是 new Date 返回对 Date 对象的引用 那么它是如何打印这个的呢 Mo
  • 如何使用 Java 和 Selenium WebDriver 在 C 目录中创建文件夹并需要将屏幕截图保存在该目录中?

    目前正在与硒网络驱动程序和代码Java 我有一种情况 我需要在 C 目录中创建一个文件夹 并在该文件夹中创建我通过 selenium Web 驱动程序代码拍摄的屏幕截图 它需要存储在带有时间戳的文件夹中 如果我每天按计划运行脚本 所有屏幕截
  • Play框架运行应用程序问题

    每当我尝试运行使用以下命令创建的新 Web 应用程序时 我都会收到以下错误Play http www playframework org Error occurred during initialization of VM Could no
  • Java JDBC:更改表

    我希望对此表进行以下修改 添加 状态列 varchar 20 日期列 时间戳 我不确定该怎么做 String createTable Create table aircraft aircraftNumber int airLineCompa
  • 在 HTTPResponse Android 中跟踪重定向

    我需要遵循 HTTPost 给我的重定向 当我发出 HTTP post 并尝试读取响应时 我得到重定向页面 html 我怎样才能解决这个问题 代码 public void parseDoc final HttpParams params n
  • 多个 Maven 配置文件激活多个 Spring 配置文件

    我想在 Maven 中构建一个环境 在其中我想根据哪些 Maven 配置文件处于活动状态来累积激活多个 spring 配置文件 目前我的 pom xml 的相关部分如下所示
  • 控制Android的前置LED灯

    我试图在用户按下某个按钮时在前面的 LED 上实现 1 秒红色闪烁 但我很难找到有关如何访问和使用前置 LED 的文档 教程甚至代码示例 我的意思是位于 自拍 相机和触摸屏附近的 LED 我已经看到了使用手电筒和相机类 已弃用 的示例 但我
  • 列出jshell中所有活动的方法

    是否有任何命令可以打印当前 jshell 会话中所有新创建的方法 类似的东西 list但仅适用于方法 您正在寻找命令 methods all 它会打印所有方法 包括启动 JShell 时添加的方法 以及失败 被覆盖或删除的方法 对于您声明的
  • JavaMail 只获取新邮件

    我想知道是否有一种方法可以在javamail中只获取新消息 例如 在初始加载时 获取收件箱中的所有消息并存储它们 然后 每当应用程序再次加载时 仅获取新消息 而不是再次重新加载它们 javamail 可以做到这一点吗 它是如何工作的 一些背
  • 我可以使用 HSQLDB 进行 junit 测试克隆 mySQL 数据库吗

    我正在开发一个 spring webflow 项目 我想我可以使用 HSQLDB 而不是 mysql 进行 junit 测试吗 如何将我的 mysql 数据库克隆到 HSQLDB 如果您使用 spring 3 1 或更高版本 您可以使用 s
  • 斯坦福 NLP - 处理文件列表时 OpenIE 内存不足

    我正在尝试使用斯坦福 CoreNLP 中的 OpenIE 工具从多个文件中提取信息 当多个文件 而不是一个 传递到输入时 它会给出内存不足错误 All files have been queued awaiting termination
  • 如何为俚语和表情符号构建正则表达式 (regex)

    我需要构建一个正则表达式来匹配俚语 即 lol lmao imo 等 和表情符号 即 P 等 我按照以下示例进行操作http www coderanch com t 497238 java java Regular Expression D
  • Eclipse Java 远程调试器通过 VPN 速度极慢

    我有时被迫离开办公室工作 这意味着我需要通过 VPN 进入我的实验室 我注意到在这种情况下使用 Eclipse 进行远程调试速度非常慢 速度慢到调试器需要 5 7 分钟才能连接到远程 jvm 连接后 每次单步执行断点 行可能需要 20 30
  • 仅将 char[] 的一部分复制到 String 中

    我有一个数组 char ch 我的问题如下 如何将 ch 2 到 ch 7 的值合并到字符串中 我想在不循环 char 数组的情况下实现这一点 有什么建议么 感谢您花时间回答我的问题 Use new String value offset
  • 编译器抱怨“缺少返回语句”,即使不可能达到缺少返回语句的条件

    在下面的方法中 编译器抱怨缺少退货声明即使该方法只有一条路径 并且它包含一个return陈述 抑制错误需要另一个return陈述 public int foo if true return 5 鉴于Java编译器可以识别无限循环 https
  • 在 Maven 依赖项中指定 jar 和 test-jar 类型

    我有一个名为 commons 的项目 其中包含运行时和测试的常见内容 在主项目中 我添加了公共资源的依赖项
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分
  • 有没有办法为Java的字符集名称添加别名

    我收到一个异常 埋藏在第 3 方库中 消息如下 java io UnsupportedEncodingException BIG 5 我认为发生这种情况是因为 Java 没有定义这个名称java nio charset Charset Ch
  • 如何实现仅当可用内存较低时才将数据交换到磁盘的写缓存

    我想将应用程序生成的数据缓存在内存中 但如果内存变得稀缺 我想将数据交换到磁盘 理想情况下 我希望虚拟机通知它需要内存并将我的数据写入磁盘并以这种方式释放一些内存 但我没有看到任何方法以通知我的方式将自己挂接到虚拟机中before an O
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两

随机推荐

  • 局部变量 n 可能尚未初始化

    import View UI public class App UI m public static void main String args System out println Hello UI n n menu UI 类位于 Vie
  • TinyMCE 多个编辑器在 Yii2 中无法正确渲染

    我正在使用 Yii2 和来自2amigos yii2 tinymce widget https github com 2amigos yii2 tinymce widget 仅当我仅使用一次时 编辑器看起来才正确 但是当我使用多个编辑器时
  • 在 Swift 中使用 hidesBackButton 隐藏导航栏中的后退按钮

    我想在从一个视图转换到另一个视图时隐藏后退按钮 我阅读了有关此问题的问题 每个答案都是 使用hidesBackButton 这样做的问题是 当我将其放入 viewDidLoad viewWillAppear 中时 后退按钮箭头会隐藏 但字符
  • 找不到“MySql.Data.MySqlClient”ADO.NET 提供程序的实体框架提供程序

    我尝试将实体框架与 MySQL 一起使用 但出现上述错误 我安装了最新的 MySQL 连接器 完整的错误如下 No Entity Framework provider found for MySql Data MySqlClient ADO
  • Material UI 自动完成 + 无限滚动在一起?

    问题 获取双滚动条 删除纸张滚动条会使自动完成内容不可滚动 因此仅显示下拉列表可见高度中的内容 如果我隐藏另一个滚动 则不会调用无限滚动 API 我怎样才能让它工作 描述 我正在尝试使用 Material UI Autocomplete 创
  • 组合框中的默认文本

    我有 2 个组合框 如图所示 想知道是否可以为组合框设置某种文本字段 因此第一个框将说明成员 这样我想摆脱组合框上方的文本框 我知道这可以通过将 成员 添加到数据集中来完成 但我不想这样做 还有别的办法吗 BR 您正在寻找的效果称为 水印
  • 当手机空闲/打瞌睡/锁定时 Android 服务不工作

    晚上好 我已经尝试了好几天了 我真的不知道还能尝试什么 我基本上尝试了我在网上找到的所有东西 但它仍然不起作用 但我有一种感觉 一旦我找到了解决方案它一定是非常简单的事情 我正在开发一个更大的项目 但在这里我只是想得到一个非常简单的示例 我
  • Jetty 中的 ServletHandler 和 ServletContextHandler 有什么区别?

    我正在尝试开始使用嵌入式 Jetty 服务器 我只想根据请求路径将请求映射到不同的 servlet 创建一个有什么区别ServletHandler并向其中添加 servlet 而不是创建ServletContextHandler并向其中添加
  • 复制迁移的目的是什么?

    背景 如果可执行文件具有在共享对象中定义的外部数据引用 则编译器将使用复制重定位并将副本放置在其 bss 部分中 本网站详细介绍了复制迁移 http www shrubbery net solaris9ab SUNWdev LLM p22
  • 验证失败:上传文件的扩展名与其内容不匹配

    我正在使用回形针 gem 上传文件 我的回形针 gem 版本是回形针 4 1 1 上传文件时抛出 Validation failed Upload file has an extension that does not match its
  • 我是否需要为图片元素内的每个源重复类属性? (HTML5)

    我正在将图像转换为 webp 这意味着我需要使用 图片 标签而不是 img 因为图片允许为不支持 webp 的设备和浏览器回退到 png 格式 无论如何 我有一个如下所示的 img img class usp pics pic1 src i
  • 检查 Arduino 中的内存占用

    我正在使用 Arduino 开发一个简单的项目 最近 我必须将我的一个变量转换为 long 而不是 int 为了让事情简单 我只是移动了它与之交互的所有数字 所以我不必担心跨类型比较和数学 这看起来很浪费 但这只是我自己的一个时钟 我并不在
  • 没有虚拟继承的多重继承

    我试图理解多重继承 这是我的代码 struct A A static int n static int increment return n int A n 0 struct B public A struct C public A str
  • 在Spring控制器中,我可以根据请求参数的数量调用一个方法吗?

    我一直在用 Spring 改造现有的网络应用程序 显然 从 Spring 开始比稍后添加要容易得多 我们有可以接受多个请求参数的 servlet 根据参数的数量 将采取不同的操作 例如 doSomething prod 15 显示产品 15
  • 使用 Unicode 字符作为 zip 存档内的文件名

    我正在压缩的文件名包含一些特殊字符 例如P r quation LES HOPITAUX NEUFS xls到另一个文件夹 比如说temp 我可以压缩文件 但问题是文件名会自动更改为P r 方程 LES HOPITAUX NEUFS xls
  • 在 WSO2 中传递 CDATA

    WSO2 4 8 1 在 XML 消息中传递 CDATA 部分时存在一个众所周知的问题 此类部分始终会替换为其 XML 转义字符串形式的内容 任何解决此问题的方法将不胜感激 同时 我找到了一个页面 介绍了用于此目的的一些补丁 patch05
  • Linuxarm64如何在AArch32和AArch64之间切换

    Linux支持运行32位应用程序 只要 内核启用CONFIG COMPAT 硬件支持AArch32 我假设32位应用程序必须在arm AArch32执行状态下运行 并且如果环境有32位应用程序和64位应用程序 32位应用程序进程 gt ar
  • Spark-sql:无法实例化 org.apache.hadoop.hive.metastore.HiveMetaStoreClient

    经过相当长的一段时间 无法弄清楚如何在运行 Spark sql 二进制文件时识别以下错误的根本原因 15 12 08 14 48 41 WARN NativeCodeLoader Unable to load native hadoop l
  • ASP.Net 相当于 PHP 的 Echo 是什么?

    我想 回显 由定界符分隔的字符串 例如 塞尔吉奥 塔皮亚 1999 上午10点 HTML 页面的正文 我怎样才能实现这个目标 谢谢你 Use Response Write string http msdn microsoft com en
  • AspectJ:一个方面内多个建议的执行顺序(优先级)

    类使用编译时编织 想象一下我有一个方面类 Aspect public class SecurityInterceptor Pointcut within org springframework stereotype Controller p