【问题标题】:Spring AspectJ load time weaving javaagentSpring AspectJ 加载时间编织 javaagent
【发布时间】:2021-07-06 00:08:34
【问题描述】:

我想在 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

【问题讨论】:

  • 欢迎来到 SO 并感谢您提出有趣的问题。像这样,用一堆小sn-ps,问题很简洁,可惜没人能重现你的问题。由于 Gradle、Spring、AspectJ、Hibernate 的复杂相互作用,建议你在 GitHub 上提供一个MCVE,然后也许有人可以找出问题所在并帮助你回答问题。

标签: java spring hibernate gradle aspectj


【解决方案1】:

我找到了解决办法

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

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

【讨论】:

    猜你喜欢
    • 2019-05-10
    • 1970-01-01
    • 1970-01-01
    • 2011-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多