详解Web应用的底层逻辑,掌握Spring框架开发的思路( 二 )


为提高性能 , 我们提供了对应处理组件的线程池 , 由特定的管理程序根据情况调度 , 即将一个服务处理组件实例化多个提供给进入的数据流请求调用 , 处理完成后 , 将服务组件归还给某个调度管理器 , 以备后面的请求使用 。
随着应用程序的复杂程度加大 , 为了获取更好的处理性能 , 我们开始采用异步方式来处理 , 也就是由独立的线程负责接收请求 , 然后将请求交给工作线程处理 , 它不会阻止其继续接收请求 。而在请求处理完成时 , 会向系统发送通知 , 通过线程中断处理来响应通知 , 如此以来可以使用较少的线程获取高效率 , 提高应用的反应效率 。
当然这种反应式异步处理的开发模型是建立在Java NIO数据流模型基础上的 。
 
Spring容器与Spring MVC框架前面我们说过 , Spring框架的优势在于它在Servlet级别上提供了一个开发复杂应用的组件容器 , 而且这个容器是实现了可配置的工厂模式 , 也就是说在容器初始化时 , 它会将组件服务实例化或者将其相关联的组件定义配置好 , 在需要时动态的去实例化对象 。
开发人员在使用Spring框架进行开发时 , 基本上是将自己应用程序的数据类型和逻辑组件都作为Spring容器管理的组件 , 对于组件的构建和销毁以及整个调用过程的管理都由Spring容器来完成 。
开发人员只需要将定义的数据类型和组件告诉容器 , 让它遵循容器管理的规则即可 。
为此Spring容器为了获取它能管理哪些数据类型或者逻辑组件实现类 , 它通过读取特定格式的花名册来完成 , 比如有XML , YML以及Annotation或者代码等格式 。
其实其本质都是一样的就是工厂模式 , 将构建某个依赖项的工作交给专门干这件事的人 , 我们可以理解为我们有无数的人将创建自己实例的任务交给了一个专门做这事的人 。
而这里这个人就是Spring容器 , 我们只需要在任何一个需要构建的数据类型或者组件时 , 将这个能够创建依赖的对象提供给它即可 。我们称这个被委托者为容器 。
它会在启动时读取需要使用的所有组件和数据类型定义信息 , 并将它们初始化实例放入到其管理的内存空间里 , 并为每个实例定义唯一标识 , 并工作这些内容来获取其对应的对象实例 。
 
总结上面对前面说的内容做了简单的回顾 , 是为了能够衔接后面所要说的内容 , 如此是为了想连贯的从底层网络数据流到如何被封装进入我们开发语言运行的领域 , 以及我们如何在应用程序层级上对数据流的设计和管理 , 从而能够网络技术 , 数据编解码 , Web服务器 , 高级的应用程序开发框架能够串联起来 , 找出它们之间的关联 , 它们为什么要如此设计 , 以及它们解决的问题什么 , 来帮助初学的小伙伴将自己所学的知识串联成一个完整的技术图谱 , 更加宏观的掌握技术思路 , 为以后开拓创新打好基础 。
由于现在在网络上文章过长就没有人愿意读了 , 所以每次写都没组织好 , 由于字数问题而不得不中断 , 不过我会尽量的连贯的去说 。




推荐阅读