Spring AspectJ加载时编织javaagent

Spring AspectJ load time weaving javaagent

我想在每次打开 Hibernate 会话时使用 AspectJ 添加过滤器。我创建了一个方面并为我自己的 类 测试了它并且它有效,但是对于 Hibernate 会话它没有做任何事情。

我在资源中创建了一个META-INF/aop.xml:

<aspectj>

<weaver options="-Xreweavable -verbose -showWeaveInfo">
    <include within="immo.api.config.multitenancy.TestAspect"/>
    <include within="org.hibernate.internal.SessionFactoryImpl.SessionBuilderImpl"/>
</weaver>

<aspects>
    <aspect name="immo.api.config.multitenancy.TestAspect"/>
</aspects>

当我启动我的程序时,出现以下异常:

... Specify a custom LoadTimeWeaver or start your Java virtual machine with Spring's agent: -javaagent:spring-instrument-{version}.jar

我遵循了这些教程:

Tutorial 1 Tutorial 2

我看到我必须像异常一样传递 JVM 参数,所以我尝试在构建中执行以下操作 gradle:

apply plugin: 'application'
applicationDefaultJvmArgs = ["-javaagent:spring-instrument.jar", "-javaagent:aspectjweaver.jar"]

根据 IntelliJ,applicationDefaultJvmrgs 从未使用过,我仍然遇到相同的异常。

所以有人可以帮助我在 gradle 中正确传递 JvmArgs 吗?或者,更好的是,告诉我如何使用自定义 LoadTimeWeaver 完成工作?

提前致谢!

编辑:

可能不清楚。问题是 aop.xml 从未使用过,我只需要知道如何告诉 jvm 使用带有 gradle

的 javaagent

我找到了

的解决方案

https://guypaddock.github.io/posts/aspectj-native-syntax-with-spring-ltw-and-gradle/

这种方法解决了我的问题。