zoukankan      html  css  js  c++  java
  • Spring是怎么解决Bean之间的循环依赖的?

    正统的方法

    网上已经有很多文章来说明bean循环依赖的原因了.

    总结就是先把bean放到三级缓存(singletonFactory)中,方便被依赖的bean可以读到它。

    那解决的方法就是不用构造方法来初始化bean,用属性注入即可,因为用属性注入才会放到三级缓存里,也就是

    @Autowired
    private Service1 service1;
    

    旁门左道的方法

    可能有些项目大了,之前都是构造器注入,都改成属性注入又不好搞,所以有些旁门左道的方法:

    • 把两个bean融合,那就没有这问题了。(相当于没说)
    • 用发布订阅来搞(ApplicationEvent)。(没试过,应该行得通)
    • 用applicationContext.getBean(T.class)。 (有时确实这个方法是最靠谱的)

    用发布订阅来搞的话,其实不太好,因为会增加项目的复杂度,本来直观能看到每个类或者bean在什么地方引用,但是用事件去处理时就不是很直观了。

     
     
  • 相关阅读:
    计算机系统概述
    Qt学习--初学注意事项
    Qt实现一个简单的TextEditor
    Qt 用户登录界面
    C++ 模板
    多态与虚函数
    继承与派生
    C++ 运算符重载
    web安全-点击劫持
    web安全问题-cookie
  • 原文地址:https://www.cnblogs.com/huangwentian/p/14691291.html
Copyright © 2011-2022 走看看