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

时间:2012-10-17 08:00:44

标签: java spring aop aspectj

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

应用context.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 {
   ...
}

3 个答案:

答案 0 :(得分:7)

连接方面类时,这是一个常见错误。这意味着您的方面类(在本例中为LoggingAspect)尚未转换为可应用的方面。

将您的班级编入方面的两种方法是使用AJDT Eclipse pluginMaven AspectJ compiler plugin

编织方面有三种方法:

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

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

编织的方面类将添加these static methods

答案 1 :(得分:5)

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

编织方面类

编织目标类

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

答案 2 :(得分:2)

问题在于您的AspectJ编织过程无法正常工作。所以你在普通的Java类而不是AspectJ类上调用aspectOf方法。

测试此方法的简单方法:

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