zoukankan      html  css  js  c++  java
  • 框架设计注意事项——生命周期

    今天在阅读Servlet3.0.1规范时,在讲述Servlet的生命周期的章节发现一个框架设计时需要注意的点,在这里整理一下。

    我认为,框架和库的不同点在于“控制流的走向”。
    当我们使用一个库,控制流从我们的代码流向库代码,然后从库代码再流回我们的代码。当我们使用一个框架时,控制流同框架开始,流向我们的代码,最终又回到了框架的代码。这意味着当我们使用一个框架时,我们完成的组件的生命周期是由框架来管理的。在Servlet的场景下,Servlet是框架,我们实现的Servlet是组件。所以Servlet的生命周期由框架管控。Servlet的总共由三个生命周期的方法:

    init(ServletConfig):void;
    Service(ServletRequest, ServletResponse):void;
    destroy():void;
    

    Servlet规范中表述时提到,static initialization methods 不同于init(ServletConfig):void方法。这里的原因很好理解:当类被加载时静态初始化方法被调用。这是可能运行时环境还没有准备好,所以开发者应该避免在静态初始化方法中进行一些依赖容器的操作。
    这里启发了我,作为框架的使用者,如果框架没有为我们初始化生命周期的钩子,我们可以通过静态初始化方法来完成这个操作。但是需要注意,这时环境可能不完善。
    作为框架的作者,我们应该设计好组件的生命周期管理工作,同时在文档中写清楚静态初始化方法这种操作带来的问题。

  • 相关阅读:
    【转】有助于事业发展和幸福感提升的四个约定
    python命名空间的本质
    递归函数的定义和几个小例子
    全局变量与局部变量的使用问题
    计算机网络基础知识
    网络编程的基本概念,TCP/IP协议简介
    开博 第一篇
    Java8新特性之Stream
    深入理解HashMap(原理,查找,扩容)
    SQL优化|Java面试题
  • 原文地址:https://www.cnblogs.com/x2zh/p/10623929.html
Copyright © 2011-2022 走看看