aspectj相关内容

AspectJ:尝试拦截对象创建时出现 ClassCastException

我试图拦截遗留代码中的对象创建以返回另一个对象. 我的示例代码: public class ObjectCreationTest {接口A{字符串说();}公共静态类 MyImpl 实现了 A {@覆盖公共字符串说(){返回 "MyImpl";}}公共静态类 YourImpl 实现了 A {@覆盖公共字符串说(){返回 "YourImpl";}}公共静态无效主(字符串 [] args){A ..
发布时间:2021-11-11 04:40:09 其他开发

PHP 中调用和执行切入点的区别?

在Java中的AOP(AspectJ)中,当我们谈论方法切入点时,我们可以将它们区分为两个不同的集合:方法调用切入点和方法执行切入点.> 基于 SO 上的这些资源: 执行对比.呼叫加入点 AOP 中调用和执行的区别 还有一些AspectJ的背景,我们可以看出,两者之间的差异基本上可以表达如下: 给定这些类: class CallerObject {//...公共无效一些方法 ..
发布时间:2021-11-11 04:40:03 Java开发

将捕获构造函数调用的切入点

我正在尝试定义一个切入点,它将捕获所有构造函数调用,而不管修饰符、返回类型或类如何.我使用了以下代码 after():execution(* * * .new(..)) 我遇到了一个错误: 标记“*"、“("预期的语法错误. 有人可以建议什么是正确的方法吗? 解决方案 只需去掉中间的星号“*"即可.为构造函数调用指定返回类型是没有意义的,因为很明显,构造函数将始终返 ..
发布时间:2021-11-11 04:40:00 其他开发

在不在我的项目中的类上加载时间编织

我正在尝试使用 Spring 为我创建的项目中的几个类提供加载时间编织.当我调用一个不在我本地项目中的类时,我无法让它工作. 我创建了一个名为 ExampleClass 的类,当我对其中的一个方法执行 @Around 时,我可以看到我对返回值所做的修改,但是当我尝试对 String 做同样的事情,我无法得到任何结果. 这是我的方面代码: @Pointcut("call(* java. ..
发布时间:2021-11-11 04:39:51 其他开发

围绕注释字段调用的方面

我希望 AspectJ 在任何方法的所有调用周围注入测量代码,在用 @Measured 注释的字段上并捕获方法的名称.这就是我所拥有的: @Pointcut("get(@my.annotation.Measured * *) && @annotation(measured)")public void fieldAnnotatedWithMeasured(Measured 测量的) {}@Arou ..
发布时间:2021-11-11 04:39:42 Java开发

用于构造函数调用的 AspectJ 切入点

我正在尝试编写一个建议,以使用我的自定义注释拦截对类构造函数的调用: @MyCustomAnnotation公共类 SomeClass {public SomeClass(Foo a, Bar b){...}公共 SomeClass(Foo a){this(a, null);}} 我看到了一个如何拦截构造函数调用的例子,一般来说: @Before("执行(*.new(..))") 如何更新 ..
发布时间:2021-11-11 04:38:47 Java开发

关于使用 AspectJ 执行策略

我正在使用 Aspectj 执行项目范围的政策. 我现在想要实现的一件事是,除了使用 Guava 的 Preconditions.check* 方法进行简单验证之外,任何 setter 方法中都不应该有任何逻辑. Setter() 中的公共切入点:代码内(公共无效集*(*));公共切入点 inputValidation() :调用(公共无效前提条件.检查*(*));公共切入点 setFie ..
发布时间:2021-11-11 04:38:35 Java开发

围绕建议并继续调用:aspectJ,它是如何工作的?

我一直试图弄清楚 around advice 在 AspectJ 中的作用. 它不像之前和建议那样简单.有人可以简要介绍一下 around 建议的作用,以及 proceed 关键字的用途是什么? 解决方案 非常非正式地,around advice 拦截给定的joinpoint,并且可以注入新行为before,after,以及代替那个joinpoint.proceed 是一个特殊的功能 ..
发布时间:2021-11-11 04:38:08 Java开发

使用 Spring 和 AspectJ 拦截私有方法

我正在尝试使用 AspectJ 的加载时间编织和 Spring-Boot 和基于注释的配置在私有方法之前执行代码,我正在努力弄清楚为什么我的方面没有被调用. 我的简单方面如下: @Aspect公共类 LoggingAspect {私有静态记录器日志 = LoggerFactory.getLogger(LoggingAspect.class);@Before("execution(priva ..
发布时间:2021-11-11 04:37:51 Java开发

如何自定义 AspectJ aop.xml 位置?

我有与此相关的相同问题:aop.xml 名称和位置? 在答案中,它说: 使用系统属性:-D org.aspectj.weaver.loadtime.configuration=META-INF/myaop.xml “使用系统属性"是什么意思? 创建一个 aop.properties 文件?或者,写在vm选项中? 解决方案 AFAIK 没有 aop.propertie ..
发布时间:2021-11-11 04:37:45 其他开发

带有@Component 注释的@Aspect 如何在幕后工作

我一直在寻找答案,但到目前为止没有运气,因此我来这里是为了一些智慧之言. 我已经使用@Aspect 注释创建了一个方面,因为我需要@Autowire 一些单例依赖项我决定用@Component 注释这个方面类并让Spring 来做魔术.它有效,但是... 我相当熟悉 AOP 概念、它的编织方式和不同的风格(cglib 与 aspectj),但对我来说它是如何在幕后工作的并不完全直观. ..
发布时间:2021-11-11 04:37:00 其他开发

围绕外部库的重写方法的 AOP?

我正在为以下问题寻找实用的解决方案: 外部库提供组件作为基类. 自定义组件是通过扩展这些基类来制作的. 当实现抛出未处理的异常时,基类会中断. 基类源代码不可用.只有一个二进制 jar. 我正在寻找的是一个通用的 AOP 错误处理建议.它将包装每个方法的代码,这些方法是外部库中方法的直接覆盖或实现.基本上是通过 try/catch 来恢复错误. 我当然可以手动搜索它们.然而 ..
发布时间:2021-11-11 04:36:39 Java开发

一方面,在同一连接点上结合操作前、周围和后建议时,建议优先级不明确

请考虑这个简单的 Java 代码 公共类应用{公共无效 m(int i) {System.out.println("M 带参数" + i );}公共静态无效主(字符串 [] arg){应用 t = 新应用();t.m(25);}} 我已经定义了以下方面来操作这个类: 公共方面基础知识{公共无效输出(字符串标签,对象o){System.out.println(tag + ":" + o);}切 ..
发布时间:2021-11-11 04:36:25 Java开发

将 AOP 与 OSGI 结合使用的最佳解决方案?

我正在使用 Equinox,所以 Equinox Aspect 项目似乎很简单,但该项目似乎处于非活动状态,并且只有一页文档让我在最后犹豫不决. 除了那个项目,我没有看到很多在 OSGI 中使用 AOP 的选项.让我知道你们的想法和可能性,谢谢:) 解决方案 作为替代方案,您还可以考虑使用 Apache Felix Dependency Manager,它允许您在运行时向现有 OSG ..
发布时间:2021-11-11 04:36:21 Java开发

实体方面(在 Spring 中)

我在定义我的方面时遇到了一些问题.我有一堆实体,我想在其中分析 get-methods,所以我编写了以下切入点和方法 @Pointcut("execution(* tld.myproject.data.entities.*.get*()")public void getEntityProperty() {}@Around("getEntityProperty()")公共对象 profileGet ..
发布时间:2021-11-11 04:36:19 Java开发