我试图将我的方面定义为一个具体方面,以便能够在 aop.xml 中定义切入点而无需编译代码。我正在使用 LTW。
当我在切面类本身中定义我的切入点 exp 并将切面定义为一个简单的切面 ( ) 时,它可以正常工作。但是,当我将方面声明为具体方面并在 aop.xml 中定义切入点时。该方面不再起作用......并且它不再达到我建议中的断点......
这是有/没有具体方面的代码:
没有具体方面(工作正常):
public abstract aspect AbstractAspect {
protected abstract pointcut publicMethod();
}
public aspect MethodExecutionTimeAspect extends AbstractAspect {
public pointcut publicMethod() : execution(public * com.proj.package..*());
Object around() : publicMethod() {
.....
Object ret = proceed();
....
}
}
和 aop.xml
<aspectj>
<aspects>
<aspect name="com.proj.packae.aspectj.MethodExecutionTimeAspect"/>
</aspects>
<weaver options="-verbose">
</weaver>
</aspectj>
具体方面(不起作用)
public abstract aspect AbstractAspect {
protected abstract pointcut publicMethod();
}
public aspect MethodExecutionTimeAspect extends AbstractAspect {
public pointcut publicMethod() : execution(public * com.proj.package..*());
Object around() : publicMethod() {
.....
Object ret = proceed();
....
}
}
aop.xml
<aspectj>
<aspects>
<concrete-aspect name="com.proj.package.MethodExecutionTimeAspect" extends="com.project.package.aspectj.AbstractAspect">
<pointcut name="publicMethod" expression="execution(public * com.proj.package..*())" />
</concrete-aspect>
</aspects>
<weaver options="-verbose">
</weaver>
我正在使用 aspectj 1.6 罐子。
当我不使用具体方面时,以下日志
[WebappClassLoader@7f62cbb2] info register aspect com.project.package.aspectj.MethodExecutionTimeAspect
当我使用具体方面时,我看到以下日志:
[WebappClassLoader@393e11ac] info define aspect com.project.package.aspectj.MethodExecutionTimeAspect
日志上没有显示错误,看起来具体方面没有注册。
请指教。