SpringAspectJ加载时编织javaagent

yyhrrdl8  于 2021-08-25  发布在  Java
关注(0)|答案(1)|浏览(420)

我想使用aspectj在hibernate会话打开时添加一个过滤器。我创建了一个方面,并在我自己的类中测试了它,它工作了,但是在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

我遵循了这些教程:
教程1教程2
我发现我必须传递jvm参数,正如异常所告诉的那样,因此我尝试在构建梯度中执行以下操作:

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

根据intellij,ApplicationDefaultJVMRG从未使用过,我仍然得到相同的异常。
有人能帮我在gradle正确通过jvmargs吗?或者,更好的是,告诉我如何使用自定义loadtimeweaver完成工作?
提前谢谢!
编辑:
也许还不清楚。问题是从来没有使用过aop.xml,我只需要知道如何告诉jvm在gradle中使用javaagent

0yycz8jy

0yycz8jy1#

我找到了解决问题的办法
https://guypaddock.github.io/posts/aspectj-native-syntax-with-spring-ltw-and-gradle/
这种方法解决了我的问题。

相关问题