Spring 生命周期管理的缺陷

Spring具有生命周期管理的功能,例子如下:
 
  一个示例Bean的定义如下:
  public class ExampleBean {
    public void init() {
        // do some initialization work
    }
    public void cleanup() {
        // do some destruction work (like closing connection)
    }
  }

  则可以在配置文件中定义Bean如下:
 
 
  这样在Spring会调用init方法初始化exampleInitBean,在Spring销毁的时候会调用cleanup销毁exampleInitBean。
 
  Bean之间可能存在依赖关系,假定A依赖于B,那么初始化正确的顺序是先初始化B,再初始化A,而在销毁时则按照相反的顺序,
  先销毁A,再销毁B。
  然而,Spring通过依赖检测可以实现正确的初始化顺序,但是在销毁时顺序就不能保证了(粗略看了一下代码,Spring是按照
  Hash表的顺序销毁Bean的,而Hash表是不能保证顺序的),这可能会导致抛出异常。这应该是Spring的一个缺陷吧。

你可能感兴趣的:(Spring)