【问题标题】:Aspectj with spring aop configuration xml带有spring aop配置xml的Aspectj
【发布时间】:2014-07-30 01:01:45
【问题描述】:

我正在一个使用 Spring 3.1.1 版本的应用程序中工作,现在我需要向它添加一些方面。方面是用 aspectj 语言编写的,没有注释。我已经阅读了 spring 文档 chapter 8.8,但我正在努力让它发挥作用。

我的 spring 配置如下:

<aop:aspectj-autoproxy proxy-target-class="true">
  <aop:include name="loggerAspect"/>
</aop:aspectj-autoproxy>

<aop:config>
  <!-- Beans -->
  <aop:aspect id="loggerAspect" ref="loggerAspectBean">
    <!-- Pointcuts -->
    <aop:pointcut id="loggerPointcut" expression="execution(* foo.Bar.baz(..))"/>
    <!-- Advice -->
    <aop:around method="log" pointcut-ref="loggerPointcut"/>
  </aop:aspect>
</aop:config>

<bean id="loggerAspectBean" class="foo.LoggerAspect"></bean>

在我的 pom 中,是一个 Maven 项目,我有 spring-aop、aspectjrt 和 aspectjweaver 作为依赖项。

我的问题是,在启动应用程序时,我得到一个 ClassNotFoundException 代表 foo.LoggerAspect,这是可以理解的,因为 foo.LoggerAspect 是 aspectj 方面,而不是 java 类。

所以我的问题是:

  • 我应该如何配置 Spring 以便它使用写在 .aj 文件中的 aspectj 方面?

这里不能使用注释,方面是给定的,不能修改它们,需要通过 XML 保留配置。

【问题讨论】:

    标签: java aspectj spring-aop


    【解决方案1】:

    好的,简单的解决方案,只需使用 ajc 编译器编译 aj 文件,您将获得一个类文件(如果您为 LTW 编译),然后找到该类。然后添加 &lt;context:load-time-weaver aspectj-weaving="on"/&gt; 完成剩下的工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-26
      • 1970-01-01
      • 2015-12-17
      • 1970-01-01
      • 2010-12-09
      • 1970-01-01
      相关资源
      最近更新 更多