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

  • 相关阅读:
    分布式事务解决方案之可靠消息最终一致性(四)
    分布式事务解决方案之TCC(三)
    分布式事务解决方案之2PC(二)
    分布式事务初始(一)
    Spring Cloud Alibaba Sentinel 初始
    Spring Cloud Alibaba Nacos 初始
    JAVA 札记
    SpringBoot JPA 札记
    spring boot 札记
    @RequestMapping 和 @GetMapping @PostMapping 区别
  • 原文地址:https://www.cnblogs.com/x2zh/p/10623929.html
Copyright © 2011-2022 走看看