spring和spring mvc总结

spring和spring mvc总结

什么是spring?

  • 方便解耦,简化开发,通过IOC容器将对象之间的依赖关系交由spring进行控制
  • 提供AOP切面编程支持,方便面向切面编程如性能检测,事务管理,日志记录等
  • 声明事物的支持
  • 方便集成各种优秀框架
  • 简化常用工具类,可远程调用封装

什么是spring mvc?

  • sping mvc是基于mvc的web框架.spring mvc是spring框架的一个模块,spring
    mvc和spring无需通过中间整合层整合.
  • spring的mvc框架用控制反转把业务对象和控制逻辑清晰地隔离。它也允许以声明的方式把请求参数和业务对象绑定。
  • MVC:全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,使用的MVC的目的:在于将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式

spring mvc请求流程:

  • 发起请求到前端控制器(DispatcherServlet)
  • 前端控制器请求HandlerMapping查找Handler可以根据配置(可以根据xml配置或注解进行查找)
  • 处理器映射器HandlerMapping向前端控制器返回Handler,HandlerMapping会把请求映射为HandlerExecutionChain对象(包含一个Handler处理器(页面控制器)对象,多个HandlerInterceptor拦截器
  • 前端控制器调用处理器适配器去执行Handler
  • 处理器适配器HandlerAdapter将会根据适配的结果去执行Handler
  • Handler执行完成给适配器返回ModelAndView
  • 处理器适配器向前端控制器返回ModelAndView (ModelAndView是springmvc框架的一个底层对象,包括 Model和view)
  • 前端控制器请求视图解析器去进行视图解析 (根据逻辑视图名解析成真正的视图(jsp)),通过这种策略很容易更换其他视图技术,只需要更改视图解析器即可
  • 视图解析器向前端控制器返回View
  • 前端控制器进行视图渲染 (视图渲染将模型数据(在ModelAndView对象中)填充到request域)
  • 前端控制器向用户响应结果
    在这里插入图片描述

什么是spring的AOP?

  • AOP一般称为面向切面,用于将那些对业务无关,却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,减少重复代码,减少模块之间的耦合度,提高可维护性.可用于权限认证,日志管理,事务处理等.
  • AOP实现的关键在于代理模式,AOP代理主要分为静态代理和动态代理,动态代理分为JDK动态代理和CGLIB动态代理

spring AOP中的相关概念:

  • Aspect(切面): Aspect 声明类似于 Java 中的类声明,在 Aspect 中会包含着一些 Pointcut 以及相应的 Advice。
  • Joint point(连接点):表示在程序中明确定义的点,典型的包括方法调用,对类成员的访问以及异常处理程序块的执行等等,它自身还可以嵌套其它 joint point。
  • Pointcut(切点):表示一组 joint point,这些 joint point 或是通过逻辑关系组合起来,或是通过通配、正则表达式等方式集中起来,它定义了相应的 Advice 将要发生的地方。
  • Advice(增强):Advice 定义了在 Pointcut 里面定义的程序点具体要做的操作,它通过 before、after 和 around 来区别是在每个 joint point 之前、之后还是代替执行的代码。
  • Target(目标对象):织入 Advice 的目标对象.。
  • Weaving(织入):将 Aspect 和其他对象连接起来, 并创建 Adviced object 的过程

spring AOP中Advice的类型:

  • before advice:在 join point 前被执行的 advice. 虽然 before advice 是在 join point 前被执行, 但是它并不能够阻止 join point 的执行, 除非发生了异常(即我们在 before advice 代码中, 不能人为地决定是否继续执行 join point 中的代码)
  • after return advice: 在一个 join point 正常返回后执行的 advice
  • after throwing advice:当一个 join point 抛出异常后执行的 advice
  • after(final) advice:无论一个 join point 是正常退出还是发生了异常, 都会被执行的 advice
  • around advice:在 join point 前和 joint point 退出后都执行的 advice. 这个是最常用的 advice.

spring bean的生命周期:

  1. 实例化bean
  2. 设置对象属性(依赖注入)
  3. 处理Aware接口(通过一些接口传递bean的id和spring上下文)
  4. BeanPostProcessor(可实现改接口对bean进行一些自定义处理)
  5. InitializingBean与init-method(如配置该方法则自动调用其配置的初始化方法)
  6. 如果这个Bean实现了BeanPostProcessor接口,将会调用postProcessAfterInitialization(Object obj, String s)方法;
    ------以上几步之后已经被正确创建了就可以用了-------
  7. DisposableBean(如果实现改接口,不在需要bean时会自动调用destroy()方法)
  8. destroy-method(如配置该属性,会自动调用销毁方法)

spring支持的集中bean的作用域:

  1. singleton:默认,每个容器中只有一个bean的实例,单例的模式由BeanFactory自身来维护
  2. prototype:为每一个bean请求提供一个实例
  3. request:为每一个网络请求创建一个实例,在请求完成以后,bean会失效并被垃圾回收器回收
  4. session:与request范围类似,确保每个session中有一个bean的实例,在session过期后,bean会随之失效
  5. global-session:全局作用域,全局作用域与Servlet中的session作用域效果相同

spring基于xml注入bean的集中方式:

  1. Set方法注入
  2. 构造器注入:①通过index设置参数的位置;②通过type设置参数类型;
  3. 静态工厂注入
  4. 实例工厂
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值