当前位置: 首页 > 知识库问答 >
问题:

AspectJ:如何限制哪些方面是目标

宗政斌
2023-03-14

我正在尝试为一个大型Spring Boot项目上的私有方法启用方面编织。我已经有一些以公共方法为目标的方面工作得很好,但我的研究使我想到Spring AOP方面只能与公共方法交互。

 [Xlint:cantFindType]
[AppClassLoader@277050dc] error can't determine implemented interfaces of missing type javax.servlet.Filter
when processing declare parents org.springframework.web.filter.GenericFilterBean
when processing type mungers 
when weaving

我遵循了评论中的建议,现在在启动时有以下例外情况:

 java.lang.IllegalStateException: ClassLoader [jdk.internal.loader.ClassLoaders$AppClassLoader] does NOT provide an 'addTransformer(ClassFileTransformer)' method. Specify a custom LoadTimeWeaver or start your Java virtual machine with Spring's agent: -javaagent:org.springframework.instrument.jar

我需要同时添加aspectjweaver和spring-instrument java代理吗?

共有1个答案

锺离德庸
2023-03-14

首先,您链接的项目依赖于您运行Oracle JVM。
实际上,它使用sun.misc.unsafe类,从JDK9(JPMS)开始使用该类也更加困难。

无论如何,该项目将发现一个meta-inf/aop.xml文件,该文件指向包含您的方面的类。该文件内容的一个示例可能是

<!DOCTYPE aspectj PUBLIC "-//AspectJ//DTD//EN" "http://www.eclipse.org/aspectj/dtd/aspectj.dtd">
<aspectj>
    <weaver>
        <include within="your.package.aspects.*"/>
        <include within="your.package.one.*"/>
    </weaver>
    <aspects>
        <aspect name="your.package.aspects.YourClassAspect"/>
    </aspects>
</aspectj>

标记中,您定义了哪些类将被考虑进行编织。
然后您的切入点告诉AspectJ要编织哪些特定的方法。

    null

有关进一步的阅读,请参阅AOP文档,以及我不久前提出的几个问题,这些问题产生了一个文档更新(请参阅diff)。

AspectJ LTW(编织)不能使用Spring Boot
使用AspectJ的Spring AOP-加载时间编织怀疑

 类似资料:
  • 我是从多年使用spring和刚刚开始研究JEE7和CDI的时候来回答这个问题的。 在Spring世界中,您必须将粘贴在bean上才能将其转换为Spring bean,Spring将注入依赖项,但在CDI中,似乎没有的等效项。 null

  • 我正在开发一个。NET应用程序(例如A)将与其他应用程序对话。NET应用程序(例如B)。应用程序A将被Java应用程序(比如X)使用。我目前正在使用Apache Thrift。除了对OOPS特性(如重载和继承)的基本支持外,Thrift非常棒。当然,我们可以用我们想要的方式定制Thrift编译器,因为它是一种开源技术。 我的一个朋友建议在应用程序A中使用WCF并使用WSHttp绑定。使用Basic

  • 本文向大家介绍Java中对方法重载有哪些限制?,包括了Java中对方法重载有哪些限制?的使用技巧和注意事项,需要的朋友参考一下 当一个类具有两个或多个具有相同名称但参数不同的方法时,在基于传递的参数进行调用时,将调用相应的方法(或相应的方法主体将与调用行动态绑定)。这种机制称为方法重载。 示例 输出结果 方法重载应遵循的规则 超载时,您需要牢记以下几点: 两种方法应在同一类中。 方法的名称应相同,

  • 问题内容: 我准备开始进行一些Android开发,并且需要选择一种语言。我知道Python,但必须学习Java。我想从在Android上使用Python的那些人中了解局限性。另外,相对于Java有什么好处吗? 问题答案: 我最近出于类似原因对此进行了调查。我的结论是,我无法使用Python开发本机外观的应用程序,这正是我当时想要的。特别: Python无法从Java UI类接收回调,因此您不能使用

  • 当测试这方面时,所有的工作都是预期的。多次调用方法、和时,输出为 这个结果靠谱吗?或者我的例子只是因为我这里有一个相当简单的例子才起作用? 在更复杂的场景中,是否会出现AspectJ运行时会创建的第二个实例,从而在此之前丢失在映射中收集的数据?

  • 问题内容: 我已经开始使用Python开发商业应用程序,并且正在权衡有关如何分发应用程序的选择。 除了显而易见的(分发具有适当商业许可的源)之外,我正在考虑仅分发文件而没有其相应的源。但是我对Python的兼容性保证还不够熟悉,无法知道它是否可行,更不用说这是一个好主意了。 文件是否独立于底层操作系统?例如,在64位Linux机器上生成的文件是否可以在32位Windows机器上工作? 我发现该文件