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:以非事務方式運行,如果當前存在事務,則拋出異常