13-Spring-SSM_SpringFramework加强

SpringFramework加强

SpringIOC模块

SpringMVC模块

SpringAOP模块


SpringIOC模块

IOC是一种设计思想,称之为控制反转。基于这种思想实现对象创建,对象的科学管理以及应用时的解耦(借助DI机制实现)。Spring框架核心就是基于这种机制进行了完美实现。

思考:控制反转探讨的是什么?答:谁控制谁的问题,Spring控制对象的创建管理。

思考:生活中的IOC的实现?答:例如股票操盘手,父母包办婚姻。

Spring三大设计思想:IOC/MVC/AOP


SpringBean容器的初始化

思考:如何理解Spring中的Bean对象?答:由Spring管理的对象都是Bean对象。

思考:如何理解Spring中的Bean容器?答:存储Bean对象的容器,可以是Map对象。

思考:我们自己写的类如何交给Spring管理?

答1:通过xml配置文件进行描述,例如

答2:通过annotation方式进行描述,例如@Controller/@Service

思考:Spring中Bean对象的类型?

答1:未实现FactoryBean接口的对象

答2:实现了FactoryBean接口的对象

思考:Spring中如何创建Bean对象?答:借助BeanFactory工厂,基于反射技术创建Bean对象。

思考:Spring管理的Bean对象常用作用域?

答1:Singleton(单例作用域),Bean对象具备全局唯一性。

答2:Prototype(多例作用域),每次获取Bean对象都会创建一个新的实例。

思考:Spring管理的Bean对象是否支持延迟加载?答:支持。

思考:如何自己设计一个IOC容器呢?答:详情请查阅代码。


Spring中Bean容器初始化过程图

IOC_Bean容器(配置文件/工厂/容器/全局访问点)

13-Spring-SSM_SpringFramework加强_第1张图片


Spring中的两大Map对象容器

思考:如何理解Spring中的两大Map对象?

答1:一个Map用于存储Bean的配置信息。

答2:一个Map用于存储Bean的实例信息。

13-Spring-SSM_SpringFramework加强_第2张图片13-Spring-SSM_SpringFramework加强_第3张图片


Spring中两大类型Bean对象

未实现FactoryBean接口:直接通过反射技术调用构造器创建Bean对象。

实现了FactoryBean接口:调用FactoryBean对象的getObject方法,创建Bean对象。

13-Spring-SSM_SpringFramework加强_第4张图片

说明:一般在创建一些相对复杂的工厂对象时,通常会写一个工厂Bean对象,然后基于工厂Bean对象创建具体的工厂对象,例如:SqlSessionFactoryBean/ShiroFilterFactoryBean/ProxyFactoryBean等。


Spring中的两大Bean对象描述方式

xml配置文件方式:

annotation方式:@Service/@Controller/@Configuration/@Bean...


Spring中Bean对象的依赖注入

DI依赖注入基本概念图

13-Spring-SSM_SpringFramework加强_第5张图片

DI依赖注入在项目中的应用实现图

13-Spring-SSM_SpringFramework加强_第6张图片


Spring整合MyBatis

Spring整合MyBatis方式1图

13-Spring-SSM_SpringFramework加强_第7张图片

Spring整合MyBatis方式2图

13-Spring-SSM_SpringFramework加强_第8张图片


SpringMVC模块加强

MVC是一种分层架构设计思想,目的是基于对象职责上的不同,进行分层设计,实现各司其职,各尽所能,以提高代码的可维护性/可扩展性。

SpringMVC中的MVC模块是基于MVC分层软件设计思想的一种完美实现,类似的框架还有Struts2等。

注意:B/S网络系统架构下的单体式JavaEE软件一般采用MVC水平切分

SpringMVC核心架构

SpringMVC模块核心组件对象图

13-Spring-SSM_SpringFramework加强_第9张图片


SpringMVC请求响应处理

所有MVC框架的重点都在请求和响应数据的处理上

MVC请求处理

  1. 请求路径:普通方式/rest风格方式,报错404

  2. 请求方式:Get请求/Post请求,报错405

  3. 请求参数:直接量/PO对象/MAP对象,报错400

MVC响应处理

  1. 响应方式:转发/重定向(redirect)

  2. 响应数据封装:ModelAndView,Model,Map

  3. 响应数据转换:将对象序列化为JSON格式字符串

注意:如果将响应数据转换为JSON格式字符串,将不调用ViewResover视图解析器对象


SpringMVC拦截器对象

拦截器是项目中的一种通用组件,通常可以在某个对象执行之前或之后做一些预处理操作,可以将其看成是一种特殊的过滤器。

SpringMVC拦截器对象图

13-Spring-SSM_SpringFramework加强_第10张图片

需求:通过拦截器限定系统的登录时间

13-Spring-SSM_SpringFramework加强_第11张图片

说明:在项目中自己编写SpringMVC拦截器

编写类实现HandlerInterceptor接口或者继承HandlerInterceptorAdapter类;

配置拦截器,拦截器的执行顺序与配置顺序相关。


SpringMVC异常处理

项目中异常的处理方式及规则

  1. 异常捕获:try{}catch{},日志输出

  2. 继续抛出:数据层抛给业务层,业务层再继续抛给控制层,但是异常传递要占用资源,对性能会有一定影响,所以异常能处理则处理,处理不了则继续抛出。

SpringMVC异常处理图

13-Spring-SSM_SpringFramework加强_第12张图片

SpringMVC中对异常处理的手段有两种:

  1. 直接在控制层方法中处理异常:处理异常的方法使用@ExceptionHandler修饰,并指定具体可以处理的异常类型。

  2. 定义全局异常处理类,在此类中对异常信息进行封装和转换。

说明:当Controller类中定义了局部异常处理方法,在全局异常处理类中也定义了同样的异常处理方法,那就遵循局部优先规则。


SpringAOP模块

AOP是一种面向切面的程序设计思想,基于这种思想可以动态为对象添加扩展功能设置控制对象的执行,Spring框架中对这种思想做了一个完美的实现。

SpringAOP动机

Spring框架中可以基于AOP实现对目标对象的控制以及功能的扩展:

SpringAOP对象调用图

13-Spring-SSM_SpringFramework加强_第13张图片

例如:SpringAOP在项目中要实现的功能

13-Spring-SSM_SpringFramework加强_第14张图片


SpringAOP原理实现

SpringAOP原理分析

  • 目标对象实现了接口则采用JDK动态代理控制目标对象

  • 目标对象未实现接口则采用Cglib代理控制目标对象

SpringAOP案例分析

项目中的日志管理:基于JDK动态代理实现目标对象控制及功能扩展

SpringAOP日志切面原理图

13-Spring-SSM_SpringFramework加强_第15张图片

SpringAOP其他案例实现

13-Spring-SSM_SpringFramework加强_第16张图片

SpringAOP底层代理对象创建及应用分析

JDK动态代理原理图

13-Spring-SSM_SpringFramework加强_第17张图片

Cglib代理原理图

13-Spring-SSM_SpringFramework加强_第18张图片


SpringAOP相关术语

切面(Aspect):封装了扩展功能的对象。

通知(Advice):封装了扩展功能及目标方法调用的一个切面方法。

包括:@Around,@Before,@After,@AfterReturning,@AfterThrowing

连接点:JointPoint,ProceedingJoinPoint(泛指一个目标方法)。

切入点:Pointcut(泛指多个目标方法的集合)。

说明:了解常用的切入点表达式

  1. bean(*ServiceImpl)

  2. @annotation(com.db.common.annotation.RequiredLog)

  3. ...

 

你可能感兴趣的:(13-Spring)