栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

旧的“ @Transactional来自同一个班级”情况

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

旧的“ @Transactional来自同一个班级”情况

通过阅读您的问题,还不清楚您到底处在何处,因此我将简要列出使AspectJ拦截您的

@Transactional
方法所需的条件。

  1. <tx:annotation-driven mode="aspectj"/>
    在您的Spring配置文件中。
  2. <context:load-time-weaver/>
    在您的Spring配置文件中。
  3. 直接位于您的类路径中的meta-INF文件夹中的aop.xml。这种格式也解释了这里。它应该包含用于处理
    @Transactional
    注释的方面定义 :
    <aspect name="org.springframework.transaction.aspectj.AnnotationTransactionAspect"/>
  4. 同一文件中的weaver元素还应该包含一个include子句,该子句告诉它要编织哪些类:
    <include within="foo.*"/>
  5. aspectjrt.jar
    aspectjweaver.jar
    spring-aspects.jar
    spring-aop.jar
    在类路径
  6. 使用标志
    -javaagent:/path/to/spring-instrument.jar
    (或在早期版本中称为spring-agent)启动应用程序

最后一步可能没有必要。这是一个非常简单的类,允许使用

InstrumentationLoadTimeWeaver
,但是如果不可用,Spring将尝试使用另一个加载时间编织器。我从来没有尝试过。

现在,如果您认为已完成所有步骤,但仍然遇到问题,建议您在weaver上启用一些选项(在aop.xml中定义):

<weaver options="-XnoInline -Xreweavable -verbose -debug -showWeaveInfo">

这使编织者输出一堆正在编织的信息。如果看到编织的类,则可以在其中查找

TestClass
。然后,您至少有一个继续进行故障排除的起点。


关于您的第二个编辑,“几乎就像编织在类尝试执行之前没有足够快地进行编织。”,答案是 肯定的
,这可能发生。我以前经历过这样的情况。

我对此有些不满意,但是基本上这是Spring不能编织在创建应用程序上下文之前加载的类的内容。您如何创建应用程序上下文?如果您以编程方式进行操作,并且该类直接引用

TestClass
,则可能会出现此问题,因为
TestClass
加载时间太早。

不幸的是,我发现调试AspectJ很麻烦。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/438236.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号