我有各方面的问题。他们没有开火。我有一个小方面:
@Aspect
@Component
public class SynchronizingAspect {
@Pointcut("execution(public * *(..))")
@Around("synchronize() && @annotation(Synchronized)")
public void synchronize(ProceedingJoinPoint joinPoint) throws Throwable {
Logger.getGlobal().log(Level.SEVERE, "LOOOOOOOOL");
joinPoint.proceed();
}
}
和带注释的方法:
@Synchronized
@Transactional
@Override
public User create(Map<String, Object> values) {
return super.create(values);
}
在我的配置文件中
<aop:aspectj-autoproxy />
我使用的是弹簧4.1.5
和aop的依赖关系:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.6.11</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.6.11</version>
</dependency>
如果有人能告诉我它为什么不起作用并帮助我修复它,我将非常感激。
祝你好运, 太
答案 0 :(得分:1)
似乎@Transactional
create
方法干扰了您的自定义方面。
尝试在您的方面指定@Order
,如下所示。这将使执行顺序的方面更高于@Transactional
的方面。 (请注意,参数值1是任意的,以覆盖订单的默认lowest precedence设置)
@Aspect
@Component
@Order(1)
public class SynchronizingAspect { ... }
答案 1 :(得分:1)
我做到了。我删除<aop:aspectj-autoproxy />
并使用@EnableAspectJAutoProxy
,现在这样做了。谢谢你的回复!