微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spring AspectJ加载时间编织javaagent

如何解决Spring AspectJ加载时间编织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/

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。