gpt4 book ai didi

java - 是否必须在aspectJ中实现具体方面

转载 作者:太空宇宙 更新时间:2023-11-04 14:11:03 25 4
gpt4 key购买 nike

我正在aspectJ中使用加载时编织(LTW)运行HelloWorld项目。我只定义了抽象方面。我没有定义具体方面,但提到了 "name" <concrete-aspect> 的属性如main.java.aop.helloworld.MyHelloWorldAspect在aop.xml中如下:

<concrete-aspect name="main.java.aop.helloworld.MyHelloWorldAspect"
extends="main.java.aop.helloworld.HelloWorldAspect">
<pointcut name="helloWorld"
expression="execution(public static void HelloWorld.say*(..))" />
</concrete-aspect>

我可以很好地运行应用程序并获得所需的结果。但是,打印下面的行来定义具体方面。

[URLClassLoader@ddc3fe] info define aspect main.java.aop.helloworld.MyHelloWorldAspect

我想知 Prop 体类实现是否是强制性的,因为它会打印一条 INFO 消息来定义具体方面。此外,根据以下信息消息,编织和应用方面和建议工作正常。

[URLClassLoader@ddc3fe] weaveinfo Join point 'method-execution(void main.java.aop.helloworld.HelloWorld.say(java.lang.String))' in Type 'main.java.aop.helloworld.HelloWorld' (HelloWorld.java:5) advised by before advice from 'main.java.aop.helloworld.MyHelloWorldAspect' (HelloWorldAspect.java)

任何人都可以解释具体的类实现是否是强制性的。如果不需要,请帮助我理解它是如何工作的。谢谢。

最佳答案

如果您不提供具体方面,则抽象方面的建议将不适用。编译这个:

class C {}
abstract aspect X { before():staticinitialization(C) {}}

并且 X 中的建议不适用于 C。删除摘要或提供 X 的具体子方面,它将适用。然而,这仅适用于建议 - 抽象方面的任何静态横切都将适用,例如方法或字段间类型声明。

对于具体方面,您有两种选择 - 代码或 XML,并且您将采用 XML 路线,这很好。我认为您显示的第一条(措辞错误的)信息消息是告诉您系统正在根据您的规范定义具体方面,而不是您需要这样做。

关于java - 是否必须在aspectJ中实现具体方面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28316001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com