Spring 4+方面

标签 spring aspectj spring-aop

我对方面有疑问。他们不开火。我有小方面:

@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在你的方面如下。这将使具有执行顺序的方面高于@Transactional。 (请注意,参数值 1 是任意的,可以覆盖为订单设置的默认 lowest precedence)

@Aspect
@Component
@Order(1)
public class SynchronizingAspect { ... }

关于Spring 4+方面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28749701/

相关文章:

java - 如何在 Spring WebClient 中捕获 ConnectionException?

spring - Java Spring AOP : Using CustomizableTraceInterceptor with JavaConfig @EnableAspectJAutoProxy, 不是 XML <aop:advisor>

spring 注释建议顺序

spring - 如何为多个包指定单个切入点

java - Spring Eureka 服务器中的 datacenter 属性是什么意思?

java - 如何动态绕过 spring-hibernate 中字段的验证

Java自定义Annotation聚合多个注解

java - Aspectj - 如何从同一建议中调用建议方法,而不触发无限循环

java - Aspectj 通过外部库实现功能

Java:隐式类型转换,或隐式 toString() 调用