代码之家  ›  专栏  ›  技术社区  ›  wilx

由于@Lazy自引用导致的循环依赖关系。Spring 2.6有什么变通方法吗?

  •  0
  • wilx  · 技术社区  · 2 年前

    我们通过的构造函数注入使用循环依赖关系 @Lazy 引用self-type,这样我们就可以使用本地方法 @Transactional 以及其他注释。

    现在我们正在尝试更新到Spring Boot 2.6,默认情况下它禁止循环引用。

    是否有更好的方法来调用本地方法并获取 交易的 以及除 懒惰的 自我参考?

    0 回复  |  直到 2 年前
        1
  •  -3
  •   Gannebal Barka    2 年前

    你可以使用 @Resource 注入自身的注释

    class MyClass {
       @Resource
       private MyClass self;
    }
    

    paragraph in spring doc

    从4.3开始,@Autowired还考虑了注入的自引用(即对当前注入的bean的引用)。请注意,自注入是一种回退。对其他组件的规则依赖关系始终具有优先级。从这个意义上说,自我推荐不参与定期的候选人选拔,因此特别是从不属于初选。相反,它们总是以最低优先级结束。在实践中,您应该仅将自引用作为最后手段(例如,通过beans事务代理在同一实例上调用其他方法)。在这种情况下,可以考虑将受影响的方法分解为一个单独的委托bean。或者,您可以使用@Resource,它可以通过其唯一名称获得返回到当前bean的代理。