目前我正在试图AspectJ中注入的Spring bean如下所示的代码,总之我的服务器(WAS Liberty配置文件)不停地抱怨方法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 {
...
}
连接最多方面类时,这是一个常见的错误。 这意味着您的方面的类,在这种情况下LoggingAspect
还没有被转换成可应用于一个方面。
2种方法来编织类成一个方面是使用AJDT Eclipse插件或Maven的AspectJ编译器插件 。
有3种方式来编织方面:
- 编译时编织 :编译或者目标源或经由专用AspectJ编译方面类;
- 后编编织 :注入方面说明已编译的类(可应用于JAR文件)
- 装载时织 :类加载期间注入方面指令到字节码,即负载仪表类,而不是“原始”的一个;
前一个方面类可以应用于一类首先需要是“编织”进一个方面。
一个编织方面类将具有这些静态方法添加。
AspectJ的需要编织两个 - 你的切面类和目标类。
编织你的切面类
- 一方面级将获得aspectOf()和hasAspect()方法注入。
织目标类
问题是,你的AspectJ的编织工艺是行不通的。 所以,我们在调用aspectOf
一个普通的Java类方法,而不是一个AspectJ类。
一个简单的方法来测试这一点:
- 与像Eclipse插件的工具编织AJDT
- 创建和春天有个简单的JUnit测试。
- 最后,让在里面工作了。