我正在使用一个使用Spring 3.1.1版本的应用程序,现在我需要向它添加一些方面。这些方面是用aspectj语言编写的,没有注释。我读过春季文档第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、aspectjrt和aspectjweaver作为依赖项。
我的问题是,在启动应用程序时,我得到了一个ClassNotFoundException for foo.LoggerAspect,这是可以理解的,因为foo.LoggerAspect是一个aspectj方面,而不是一个java类。
所以我的问题是:
.aj文件中编写的aspectj方面?注释在这里是不可能的,方面是给定的,不能修改它们,需要保留XML的配置。
发布于 2014-07-15 13:51:02
好,简单的解决方案,只需使用ajc编译器编译aj文件,您就会得到一个类文件(如果您为LTW编译),然后找到该类。添加<context:load-time-weaver aspectj-weaving="on"/>完成了剩下的工作。
https://stackoverflow.com/questions/24121117
复制相似问题