【Spring框架核心】Spring入门知识总结

【Spring框架核心】Spring入门知识总结

文章目录


前言

Spring入门知识总结


一、什么是软件模块化,有什么用?

         把软件分成若干个不同的模块,这样就可以让不同的人去开发不同的模块。

         还有一种更加常用的方法,把软件分成若干个层次。最简单的分法就是视图层-模型层。

两层的风格是完全不同的,视图层是面向功能的,而模型层更加复杂,都是面向对象的。进一步划分:由于视图层和模型层截然不同的风格,我们在中间插入一个控制层,并且把模型层分成若干个小层,如图。

 划分后:跟界面有关的代码在界面层, 跟逻辑有关的代码在服务处, 跟数据存储有关的代码在数据访问层和映射层,数据和跟数据逻辑密切相关的代码在实体层。

好处 :1, 不同层采用不同的技术来实现  2,每一层都可以独立测试  3,代码的变更也可以更有效的控制在同层之内,不会影响其他层次。

 不同的模块化方式也会影响,我们把它部署在物理服务器上的情况,不同的层次是可以部署在不同的物理服务器上的。


一般的做法我们把视图层单独部署在web服务器上, 这台服务器只存储它的静态网页和图片。

模型层通常都是部署在应用服务器上,通常是Tomcat,或Netty所构成的应用服务器

而数据层则会存储在数据库服务器上。


好处: 提高性能

二、Spring技术栈

我们在上面看到, Spring框架主要是用于实现在服务器上面的控制器层 ,逻辑层上的代码。

Spring提供两种技术栈来实现代码        

1.传统的阻塞式的Servlet技术栈 

原理:当客户端向服务器端发起一个请求的时候,服务器端则会针对每一个请求去开启一个线程。

来处理这个请求,在这个线程里他会读取网络的数据,去读取数据库,做计算,最后产生返回给前端的结构返回回去。这些操作都是在一个线程中完成的。同样的当多个请求来访问是服务器就会开启多个线程,而占用更多内存。同时CPU也要给出更多的资源来进行线程切换。我们知道,每一台物理服务器的内存和CPU是有限的。一般做一个线程池去限制它能处理的线程。

 问题:在服务上运行的每一个请求其实都包含着一些慢速操作。如通过网络去读取数据,通过网络去读取数据库。这些跟io有关的操作会使线程出于阻塞式,不能充分利用CPU资源。又因为之前我们使用了线程池来限制,导致新的线程不无法处理。虽然此时我们的线程不忙。

2.非阻塞的响应式技术栈

他会把整个任务分成若干个任务,如运行这类高速任务 和 IO这样慢速任务 。他会把IO操作至于一个事件队列当中来侦听他是否有完成一个慢速的操作。所以慢速的操作并不会独占一个线程,从而使我们有限的资源被慢速操作阻塞了。只有当慢速操作完成以后他才会开启线程去执行高速操作。

 好处:再这样一种模式下,CPU不会再因为IO操作出于等待操作,使用在有限的物理环境下能处理更多的线程。

用途:对于IO操作特别频繁的 如用webFlux微服务的网关。采用到。平时用传统的Servlet技术栈即可。

由于这两种模式是完全不同的,所以它的用的框架是完全不同的。

三、Sevlet技术原理

Servlet是运行在服务器上的java程序,且是在一个容器当中运行的。可以认为是我们的应用服务器。

当Web浏览器(action=“”,method=“”)发送来http协议时,我们会去调用(Servlet-mapping)对应的 Servlet容器,并接受到前端发来的数据,读写数据库,用java代码写如何处理,再用Response返回前端。

Servlet特性

  • Servlet容器负责对Servlet类的创建,他会把http请求对应到在配置文件所定义的Servlet对象中间。
  • 提供listener可以在Servlet对象的全生命周期,创建初始化一直到销毁中间做我们想做的代码。
  • 提供安全性功能,可以定义拦截器interceptor来检查Http请求,提升安全性。 
  • 最重要的特性是 他支持多并发,支持一以多线程的形式,支持多个用户同时访问服务器。
  • 对象生命周期
  • 对象生命周期实例
  • 控制翻转

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值