【问题标题】:Spring factory-method="aspectOf" is not working when we deploy the application from RAD当我们从 RAD 部署应用程序时,Spring factory-method="aspectOf" 不起作用
【发布时间】:2015-03-12 14:30:23
【问题描述】:

我们正在使用带有 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"/>

方面类:

@Configurable
@Aspect
public class XyzAspect {

 @Autowired
 private XyzUtil xyzUtil;

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

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

有人可以完全解决这个问题吗?我也想从 RAD 运行应用程序。提前致谢。

【问题讨论】:

    标签: spring aspectj spring-aop rad aop


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-12
      • 2022-09-30
      • 1970-01-01
      • 2021-11-04
      • 2020-09-05
      • 2016-07-27
      • 1970-01-01
      • 2023-04-04
      相关资源
      最近更新 更多