我们使用的是带有Spring支持的AspectJ。我已经在我的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)管理控制台进行部署时,它给出了'No matching factory method found: factory method 'aspectOf'‘问题。
有没有人能完全解决这个问题。我还想从RAD运行应用程序。提前谢谢。
发布于 2015-03-25 18:14:24
AspectJ将aspectOf方法编织到您的XyzAspect中。我相信您使用的是编译时编织,因此Maven生成的EAR已经为XyzAspect类正确地“修补”了字节码,因此它部署得很好。如果你用IDE组装项目,类的字节码就会缺少某些东西(它是Java源代码的确切表示,而且是“不完整的”)。在编织过程中,AspectJ会将您的方面“转换”为单例,即添加静态变量来保存唯一的实例,并添加一个方法(aspectOf)来获取唯一的实例。请查看this thread以获取更多信息。
https://stackoverflow.com/questions/29012515
复制相似问题