Spring factory-method =" aspectOf"我们从RAD部署应用程序时无法正常工作

时间:2015-03-12 14:30:23

标签: spring aspectj spring-aop rad aop

我们正在使用AspectJ和Spring支持。我在ApplicationContext.xml中声明了我的方面,如下所示。

<context:annotation-config />
<context:spring-configured />
<context:component-scan base-package="com,com.util">
    <context:exclude-filter type="regex" expression="com.xyz*.*" />
</context:component-scan>
<bean id="xyz" class="com.util.XyzAspect" factory-method="aspectOf"/>

Aspect类:

@Configurable
@Aspect
public class XyzAspect {

 @Autowired
 private XyzUtil xyzUtil;

 @After("showPoint() ")
 public void logUser( JoinPoint pjp ) throws Throwable {
   Sysout("Some log Statement");
 }
}

当我从命令提示符执行Maven构建并在Websphere Application Server(7.0)中手动部署EAR时,它工作正常。但是当我从RAD7.5(Rational Application Developer)管理控制台进行部署时,它给出了'找不到匹配的工厂方法:工厂方法'aspectOf''问题。

有人可以完全摆脱这个问题。我也想从RAD运行应用程序。提前谢谢。

1 个答案:

答案 0 :(得分:1)

方法aspectOf由AspectJ编织到您的XyzAspect中。我相信您使用编译时编织,因此Maven生成的EAR已正确“修补”类XyzAspect的字节码,因此它部署正常。如果使用IDE组装项目,则该类的字节码缺少某些内容(它是Java源代码的精确表示,是“不完整”)。在编织期间,AspectJ将您的方面“转换”为单例,即添加静态变量以保存唯一的实例和方法(aspectOf)以获取该唯一实例。请查看this thread以获取更多信息。