Spring4+方面
Spring 4 + aspects
我在方面有问题。他们不开火。我有小长相:
@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 />
我正在使用 spring 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>
如果有人能告诉我为什么它不起作用并帮助我修复它,我将不胜感激。
此致,
马特
create
方法上的 @Transactional
似乎干扰了您的自定义方面。
尝试为订单@Order
on your aspect as below. This will make the aspect with execution order higher to that of @Transactional
. (Note that argument value 1 is arbitrary to override the default lowest precedence设置)
@Aspect
@Component
@Order(1)
public class SynchronizingAspect { ... }
我做到了。我删除了 <aop:aspectj-autoproxy />
并使用了 @EnableAspectJAutoProxy
,现在可以正常工作了。感谢回复!
我在方面有问题。他们不开火。我有小长相:
@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 />
我正在使用 spring 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>
如果有人能告诉我为什么它不起作用并帮助我修复它,我将不胜感激。
此致, 马特
create
方法上的 @Transactional
似乎干扰了您的自定义方面。
尝试为订单@Order
on your aspect as below. This will make the aspect with execution order higher to that of @Transactional
. (Note that argument value 1 is arbitrary to override the default lowest precedence设置)
@Aspect
@Component
@Order(1)
public class SynchronizingAspect { ... }
我做到了。我删除了 <aop:aspectj-autoproxy />
并使用了 @EnableAspectJAutoProxy
,现在可以正常工作了。感谢回复!