7

我目前正在尝试在 AspectJ 中注入 Spring bean,如下所示,无论如何我的服务器(WAS Liberty Profile)一直抱怨缺少方法 aspectOf。我可以知道我该如何解决这个问题吗?

应用程序上下文.xml

<aop:aspectj-autoproxy/>
<import resource="/context-file-A.xml"/>

上下文文件-A.xml

<bean id="loggingAspect" class="com.huahsin.LoggingAspect" factory-method="aspectOf">

JAVA代码

@Aspect
public class LoggingAspect {
   ...
}
4

3 回答 3

7

这是连接方面类时的常见错误。这意味着您的方面类在这种情况下LoggingAspect尚未转换为可以应用的方面。

将您的类编织到方面的 2 种方法是使用AJDT Eclipse 插件Maven AspectJ 编译器插件

有 3 种编织方面的方法:

  • 编译时编织:通过专用的aspectj编译器编译目标源或方面类;
  • 编译后编织:向已编译的类注入方面指令(可应用于 JAR 文件)
  • 加载时编织:在类加载期间向字节码注入方面指令,即加载检测类而不是“原始”类;

在一个方面类可以应用到一个类之前,它首先需要被“编织”到一个方面。

编织的方面类将添加这些静态方法

于 2012-10-19T19:45:50.663 回答
5

AspectJ 需要同时编织——你的切面类和目标类。

编织你的方面类

编织目标类

  • 添加对这些方法的调用。
于 2015-08-21T16:51:47.017 回答
2

问题是您的 AspectJ 编织过程不起作用。因此,您是aspectOf在普通 Java 类而不是 AspectJ 类上调用该方法。

一个简单的测试方法:

  1. 使用 Eclipse 插件AJDT之类的工具进行编织
  2. 使用 Spring 创建一个简单的 JUnit 测试。
  3. 最后让它在 WAS 中工作。
于 2012-10-17T21:59:50.487 回答