aspectj相关内容
我试图拦截遗留代码中的对象创建以返回另一个对象. 我的示例代码: public class ObjectCreationTest {接口A{字符串说();}公共静态类 MyImpl 实现了 A {@覆盖公共字符串说(){返回 "MyImpl";}}公共静态类 YourImpl 实现了 A {@覆盖公共字符串说(){返回 "YourImpl";}}公共静态无效主(字符串 [] args){A
..
在Java中的AOP(AspectJ)中,当我们谈论方法切入点时,我们可以将它们区分为两个不同的集合:方法调用切入点和方法执行切入点.> 基于 SO 上的这些资源: 执行对比.呼叫加入点 AOP 中调用和执行的区别 还有一些AspectJ的背景,我们可以看出,两者之间的差异基本上可以表达如下: 给定这些类: class CallerObject {//...公共无效一些方法
..
我正在尝试定义一个切入点,它将捕获所有构造函数调用,而不管修饰符、返回类型或类如何.我使用了以下代码 after():execution(* * * .new(..)) 我遇到了一个错误: 标记“*"、“("预期的语法错误. 有人可以建议什么是正确的方法吗? 解决方案 只需去掉中间的星号“*"即可.为构造函数调用指定返回类型是没有意义的,因为很明显,构造函数将始终返
..
我正在尝试使用 Spring 为我创建的项目中的几个类提供加载时间编织.当我调用一个不在我本地项目中的类时,我无法让它工作. 我创建了一个名为 ExampleClass 的类,当我对其中的一个方法执行 @Around 时,我可以看到我对返回值所做的修改,但是当我尝试对 String 做同样的事情,我无法得到任何结果. 这是我的方面代码: @Pointcut("call(* java.
..
我想创建一个自定义注解来跳过方法执行 这是我的注解代码,带有验证器类 @Target({ 方法,字段,参数})@Retention(RetentionPolicy.RUNTIME)@Constraint(validatedBy={MyValidator .class})公共@interface MyAnnotation {String message() 默认“DEFAULT_FALSE"
..
我希望 AspectJ 在任何方法的所有调用周围注入测量代码,在用 @Measured 注释的字段上并捕获方法的名称.这就是我所拥有的: @Pointcut("get(@my.annotation.Measured * *) && @annotation(measured)")public void fieldAnnotatedWithMeasured(Measured 测量的) {}@Arou
..
我正在尝试编写一个建议,以使用我的自定义注释拦截对类构造函数的调用: @MyCustomAnnotation公共类 SomeClass {public SomeClass(Foo a, Bar b){...}公共 SomeClass(Foo a){this(a, null);}} 我看到了一个如何拦截构造函数调用的例子,一般来说: @Before("执行(*.new(..))") 如何更新
..
我正在使用 Aspectj 执行项目范围的政策. 我现在想要实现的一件事是,除了使用 Guava 的 Preconditions.check* 方法进行简单验证之外,任何 setter 方法中都不应该有任何逻辑. Setter() 中的公共切入点:代码内(公共无效集*(*));公共切入点 inputValidation() :调用(公共无效前提条件.检查*(*));公共切入点 setFie
..
我一直试图弄清楚 around advice 在 AspectJ 中的作用. 它不像之前和建议那样简单.有人可以简要介绍一下 around 建议的作用,以及 proceed 关键字的用途是什么? 解决方案 非常非正式地,around advice 拦截给定的joinpoint,并且可以注入新行为before,after,以及代替那个joinpoint.proceed 是一个特殊的功能
..
我在我的 guice 应用程序中使用了 aspectj LTW,我正在尝试为从配置文件控制的方面创建切入点定义.例如: pointcut publicOperation() : execution(*** READ THIS FROM CONFIG/PROPERTY FILE ****);对象周围():publicOperation(){.....} 我有哪些可能的选择? 谢谢 解
..
我正在尝试使用 AspectJ 的加载时间编织和 Spring-Boot 和基于注释的配置在私有方法之前执行代码,我正在努力弄清楚为什么我的方面没有被调用. 我的简单方面如下: @Aspect公共类 LoggingAspect {私有静态记录器日志 = LoggerFactory.getLogger(LoggingAspect.class);@Before("execution(priva
..
我有与此相关的相同问题:aop.xml 名称和位置? 在答案中,它说: 使用系统属性:-D org.aspectj.weaver.loadtime.configuration=META-INF/myaop.xml “使用系统属性"是什么意思? 创建一个 aop.properties 文件?或者,写在vm选项中? 解决方案 AFAIK 没有 aop.propertie
..
我想在特定的包中执行一个 execute 方法. 可能的切入点是什么? 注意:我使用的是@AspectJ 风格的 Spring AOP. 解决方案 看这里 http://www.eclipse.org/aspectj/doc/released/adk15notebook/annotations-pointcuts-and-advice.html @(org.xyz..*)
..
我一直在寻找答案,但到目前为止没有运气,因此我来这里是为了一些智慧之言. 我已经使用@Aspect 注释创建了一个方面,因为我需要@Autowire 一些单例依赖项我决定用@Component 注释这个方面类并让Spring 来做魔术.它有效,但是... 我相当熟悉 AOP 概念、它的编织方式和不同的风格(cglib 与 aspectj),但对我来说它是如何在幕后工作的并不完全直观.
..
我正在与: Spring 框架 4.3.3 AspectJ 1.8.9 我有以下正常流程: @Controller -> @Service -> @Repository 我有以下关于 AOP 的一对: PersonaServicePointcut PersonaServiceAspect 场景如下: @Service 类有一些方法,例如:delete、
..
背景 使用方面记录项目,以便所有用 @Log 注释标记的方法、类和构造函数都将信息写入日志文件. 问题 方法似乎是递归调用一级深度,但代码没有显示任何这样的递归关系. 实际 记录结果: 2018-09-25 12:17:29,155 |↷|EmailNotificationServiceBean#createPayload([安全])2018-09-25 12:17
..
我正在为以下问题寻找实用的解决方案: 外部库提供组件作为基类. 自定义组件是通过扩展这些基类来制作的. 当实现抛出未处理的异常时,基类会中断. 基类源代码不可用.只有一个二进制 jar. 我正在寻找的是一个通用的 AOP 错误处理建议.它将包装每个方法的代码,这些方法是外部库中方法的直接覆盖或实现.基本上是通过 try/catch 来恢复错误. 我当然可以手动搜索它们.然而
..
请考虑这个简单的 Java 代码 公共类应用{公共无效 m(int i) {System.out.println("M 带参数" + i );}公共静态无效主(字符串 [] arg){应用 t = 新应用();t.m(25);}} 我已经定义了以下方面来操作这个类: 公共方面基础知识{公共无效输出(字符串标签,对象o){System.out.println(tag + ":" + o);}切
..
我正在使用 Equinox,所以 Equinox Aspect 项目似乎很简单,但该项目似乎处于非活动状态,并且只有一页文档让我在最后犹豫不决. 除了那个项目,我没有看到很多在 OSGI 中使用 AOP 的选项.让我知道你们的想法和可能性,谢谢:) 解决方案 作为替代方案,您还可以考虑使用 Apache Felix Dependency Manager,它允许您在运行时向现有 OSG
..
我在定义我的方面时遇到了一些问题.我有一堆实体,我想在其中分析 get-methods,所以我编写了以下切入点和方法 @Pointcut("execution(* tld.myproject.data.entities.*.get*()")public void getEntityProperty() {}@Around("getEntityProperty()")公共对象 profileGet
..