Spring学习总结

1.Spring Bean 生命周期

实例化->设置属性->调用BeranNameAware方法setBeanName->调用beanFactoryAware方法setbeanFactory->调用ApplicationContextAware的setApplicationContext方法->调用BeanPostProcess的前置方法-->调用intializingBean的afterPropertiesSet-->调用定制初始化方法-->调用BeanPostProcess的后置方法-->bean准备就绪-->DisposableBean的destory方法

注意:Spring 只帮我们管理单例模式 Bean 的完整生命周期,对于 prototype 的 bean ,Spring 在创建好交给使用者之后则不会再管理后续的生命周期。

2.IOC容器初始化


容器初始化

3.Spring中Bean的作用域


作用域

4.Spring MVC的工作原理

MVC 是一种设计模式。

MVC流程图

原理:
客户端发送请求-> 前端控制器 DispatcherServlet 接受客户端请求 -> 找到处理器映射 HandlerMapping 解析请求对应的 Handler-> HandlerAdapter 会根据 Handler 来调用真正的处理器开处理请求,并处理相应的业务逻辑 -> 处理器返回一个模型视图 ModelAndView -> 视图解析器进行解析 -> 返回一个视图对象->前端控制器 DispatcherServlet 渲染数据(Moder)->将得到视图对象返回给用户

5.Spring中都用到了哪些设计模式?

1.控制反转(IOC)和依赖注入(DI)

2.工厂设计模式:Spring使用工厂模式通过 BeanFactory、ApplicationContext 创建 bean 对象

3.单例设计模式:Spring 中的 Bean 默认都是单例的。

4.代理设计模式:Spring AOP 功能的实现。

6.Spring 事务中的隔离级别

TransactionDefinition 接口中定义了五个表示隔离级别的常量:

DEFAULT:引用数据库默认的事务隔离级别,Mysql 默认采用的REPEATABLE_READ隔离级别 Oracle 默认采用的 READ_COMMITTED隔离级别.

READ_UNCOMMITTED:允许读取尚未提交的数据,可能会导致脏读、幻读或不可重复读

READ_COMMITTED:允许读取务已经提交的数据,可以阻止脏读,但是幻读或不可重复读仍有可能发生

REPEATABLE_READ:对同一字段的多次读取结果都是一致的,除非数据是被本身事务自己所修改,可以阻止脏读和不可重复读,但幻读仍有可能发生。

SERIALIZABLE:最高级别,按照ACID的隔离级别,可阻止幻读、不可重复读以及幻读,但会影响性能

7.Spring事务中的事务传播行为

支持当前事务的情况:

REQUIRED:如果存在则加入该事务;如果没有,则创建一个新事务;

SUPPORTS:如果存在则加入该事务;如果没有,则以非事务的方式继续运行

MANDATORY:如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。

不支持当前事务的情况:

REQUIRES_NEW:创建一个新的事务,如果当前存在事务,则把当前事务挂起。

NOT_SUPPORTED:以非事务方式运行。如果当前存在事务,则把当前事务挂起。

PROPAGATION_NEVER:以非事务方式运行,如果当前存在事务,则抛出异常

你可能感兴趣的:(Spring学习总结)