为什么服务器抱怨aspectOf丢失了?

hua*_*n68 7 java aop spring aspectj

我正在尝试在AspectJ中注入Spring bean,就像下面显示的代码一样,无论如何我服务器(WAS Liberty Profile)一直抱怨方法aspectOf缺失.我可以知道如何解决这个问题?

应用程序的context.xml

<aop:aspectj-autoproxy/>
<import resource="/context-file-A.xml"/>
Run Code Online (Sandbox Code Playgroud)

上下文文件A.XML

<bean id="loggingAspect" class="com.huahsin.LoggingAspect" factory-method="aspectOf">
Run Code Online (Sandbox Code Playgroud)

JAVA代码

@Aspect
public class LoggingAspect {
   ...
}
Run Code Online (Sandbox Code Playgroud)

Rei*_*eus 7

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

将类编织成方面的两种方法是使用AJDT Eclipse插件Maven AspectJ编译器插件.

编织方面有三种方法:

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

在将一个方面类应用于类之前,首先需要将其"编织"到一个方面.

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


Vla*_*čík 5

AspectJ需要编织 - 方面类和目标类.

编织你的方面课

编织目标类

  • 添加对这些方法的调用.


Esp*_*pen 2

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

测试这个的简单方法:

  1. 使用 Eclipse 插件AJDT等工具进行编织
  2. 使用 Spring 创建一个简单的 JUnit 测试。
  3. 最后让它在WAS内部运行。