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 是一种设计模式。
原理:
客户端发送请求-> 前端控制器 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:以非事务方式运行,如果当前存在事务,则抛出异常