spring框架总结(一)基础


前言

本系列是自己在学习,工作中的总结与积累,为了记录下自己的知识积累,同时分享给大家


一、优点

  • 非侵入式:基于Spring开发的应用中的对象可以不依赖于Spring的API,不需要继承Spring的接口和类,直接通过配置依赖注入就可以使用,非侵入式的代码没有过多的依赖,可以很方便的迁移到其他地方。
  • 控制反转:IOC(Inversion of Control),不是什么新技术,是一种设计理念,是指将对象的创建权交给 Spring框架去创建,在未使用Spring的时候,对象的创建都是由我们自己在代码中new创建,而使用 Spring之后。对象的创建都是给了Spring 框架。
    IOC对编程带来的最大改变不是从代码上,而是从思想上,发生了“主从换位”的变化,主程序变成被动,不是主动去生成对象,而是被动的等待IOC容器来创建并注入它所需要的资源
    总结:IoC容器帮对象找相应的依赖对象并注入,而不是由对象主动去找,工厂+反射+配置。

这个是没有使用框架时候:
这个是没有使用框架时候

使用容器框架:
在这里插入图片描述

  • DI(依赖注入) IOC的一个重点是在系统运行中,动态的向某个对象提供它所需要的其他对象,这一点是通过DI(Dependency Injection,依赖注入)来实现的。spring就是通过反射来实现注入的。
    例如:对象a中需要使用对象b去操作数据库,没使用框架之前我们是直接去在a中创建b的对象,使用框架后,我们只需要通知spring我们需要b对象,我们自己不用去管理b对象的生命周期和创建过程,spring会在适当的时机创建b对象,注射到A当中,这样就完成了对各个对象之间关系的控制。a要运行就得依赖b,spring完成b的创建,注入到a中,这个就是依赖注入。底层使用的反射原理。
  • 面向切面编程:AOP(Aspect Oriented Programming)
  • 组件化:Spring 实现了使用简单的组件配置组合成一个复杂的应用,在 Spring 中可以使用XML和Java注解组合这些对象。

二、spring 底层所使用的设计模式

这里是一位大神写的已经很详细了

三、spring 执行流程

  1. 用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获。
  2. DispatcherServlet对请求URL进行解析,得到请求资源标识符(URI)。然后根据该URI,调用HandlerMapping获得该Handler配置的所有相关的对象(包括Handler对象以及Handler对象对应的拦截器),最后以HandlerExecutionChain对象的形式返回。
  3. DispatcherServlet 根据获得的Handler,选择一个合适的HandlerAdapter。(附注:如果成功获得HandlerAdapter后,此时将开始执行拦截器的preHandler(…)方法)。
  4. 提取Request中的模型数据,填充Handler入参,开始执行Handler(Controller)。 在填充Handler的入参过程中,根据你的配置,Spring将帮你做一些额外的工作:HttpMessageConveter: 将请求消息(如Json、xml等数据)转换成一个对象,将对象转换为指定的响应信息,数据转换:对请求消息进行数据转换。如String转换成Integer、Double等,数据根式化:对请求消息进行数据格式化。 如将字符串转换成格式化数字或格式化日期等,数据验证: 验证数据的有效性(长度、格式等),验证结果存储到BindingResult或Error中。
  5. 执行处理器Handler(Controller,也叫页面控制器)。
  6. Handler执行完成后,向DispatcherServlet 返回一个ModelAndView对象。
  7. 根据返回的ModelAndView,选择一个适合的ViewResolver(必须是已经注册到Spring容器中的ViewResolver)返回给DispatcherServlet。
  8. ViewResolver 结合Model和View,来渲染视图
  9. 将渲染结果返回给客户端。

执行流程

四、spring 启动流程

启动流程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值