Aspectj 建议顺序
Aspectj advice order
我正在使用 spring @Transctional
aspectj 模式 和 加载时间编织.
我的方面使用与注释匹配的切点 @MyAnnotation
@Aspect
@Configurable
public class MyAspect{
....
@Around("execution(* *(..)) && @annotation(annotation)")
public Object around( ProceedingJoinPoint joinPoint, MyAnnotation annotation ) throws Throwable {
...
}
}
,并在 aop.xml:
中声明
<aspectj>
<weaver>
<include within="mypackage..*"/>
</weaver>
<aspects>
<aspect name="mypackage.MyAspect" />
</aspects>
</aspectj>
我的用法:
@Transactional
@MyAnnotation
private void method() {
...
}
如何排序方面调用顺序以便 Transactional
方面在 MyAspect
之前被调用?
我需要它首先创建一个事务,然后在该事务中调用我的方面逻辑。
通过将 @DeclarePrecedence 添加到 aspect:
来解决它
@Aspect
@DeclarePrecedence("org.springframework.transaction.aspectj.*,*")
@Configurable
public class MyAspect
处理 @Transactional
的 spring 方面是 org.springframework.transaction.aspectj.AnnotationTransactionAspect
,但为了将来重命名的安全起见,我使用了 org.springframework.transaction.aspectj.*
.
我正在使用 spring @Transctional
aspectj 模式 和 加载时间编织.
我的方面使用与注释匹配的切点 @MyAnnotation
@Aspect
@Configurable
public class MyAspect{
....
@Around("execution(* *(..)) && @annotation(annotation)")
public Object around( ProceedingJoinPoint joinPoint, MyAnnotation annotation ) throws Throwable {
...
}
}
,并在 aop.xml:
中声明<aspectj>
<weaver>
<include within="mypackage..*"/>
</weaver>
<aspects>
<aspect name="mypackage.MyAspect" />
</aspects>
</aspectj>
我的用法:
@Transactional
@MyAnnotation
private void method() {
...
}
如何排序方面调用顺序以便 Transactional
方面在 MyAspect
之前被调用?
我需要它首先创建一个事务,然后在该事务中调用我的方面逻辑。
通过将 @DeclarePrecedence 添加到 aspect:
来解决它@Aspect
@DeclarePrecedence("org.springframework.transaction.aspectj.*,*")
@Configurable
public class MyAspect
处理 @Transactional
的 spring 方面是 org.springframework.transaction.aspectj.AnnotationTransactionAspect
,但为了将来重命名的安全起见,我使用了 org.springframework.transaction.aspectj.*
.