1.Spring Bean 生命周期
實例化->設(shè)置屬性->調(diào)用BeranNameAware方法setBeanName->調(diào)用beanFactoryAware方法setbeanFactory->調(diào)用ApplicationContextAware的setApplicationContext方法->調(diào)用BeanPostProcess的前置方法-->調(diào)用intializingBean的afterPropertiesSet-->調(diào)用定制初始化方法-->調(diào)用BeanPostProcess的后置方法-->bean準備就緒-->DisposableBean的destory方法
注意:Spring 只幫我們管理單例模式 Bean 的完整生命周期泞歉,對于 prototype 的 bean 凌箕,Spring 在創(chuàng)建好交給使用者之后則不會再管理后續(xù)的生命周期九妈。
2.IOC容器初始化
3.Spring中Bean的作用域
4.Spring MVC的工作原理
MVC 是一種設(shè)計模式。
原理:
客戶端發(fā)送請求-> 前端控制器 DispatcherServlet 接受客戶端請求 -> 找到處理器映射 HandlerMapping 解析請求對應(yīng)的 Handler-> HandlerAdapter 會根據(jù) Handler 來調(diào)用真正的處理器開處理請求,并處理相應(yīng)的業(yè)務(wù)邏輯 -> 處理器返回一個模型視圖 ModelAndView -> 視圖解析器進行解析 -> 返回一個視圖對象->前端控制器 DispatcherServlet 渲染數(shù)據(jù)(Moder)->將得到視圖對象返回給用戶
5.Spring中都用到了哪些設(shè)計模式帮寻?
1.控制反轉(zhuǎn)(IOC)和依賴注入(DI)
2.工廠設(shè)計模式:Spring使用工廠模式通過?BeanFactory、ApplicationContext?創(chuàng)建 bean 對象
3.單例設(shè)計模式:Spring 中的 Bean 默認都是單例的。
4.代理設(shè)計模式:Spring AOP 功能的實現(xiàn)长踊。
6.Spring 事務(wù)中的隔離級別
TransactionDefinition 接口中定義了五個表示隔離級別的常量:
DEFAULT:引用數(shù)據(jù)庫默認的事務(wù)隔離級別麻汰,Mysql 默認采用的REPEATABLE_READ隔離級別 Oracle 默認采用的 READ_COMMITTED隔離級別.
READ_UNCOMMITTED:允許讀取尚未提交的數(shù)據(jù),可能會導(dǎo)致臟讀、幻讀或不可重復(fù)讀
READ_COMMITTED:允許讀取務(wù)已經(jīng)提交的數(shù)據(jù)讲岁,可以阻止臟讀,但是幻讀或不可重復(fù)讀仍有可能發(fā)生
REPEATABLE_READ:對同一字段的多次讀取結(jié)果都是一致的务冕,除非數(shù)據(jù)是被本身事務(wù)自己所修改硼身,可以阻止臟讀和不可重復(fù)讀,但幻讀仍有可能發(fā)生迂曲。
SERIALIZABLE:最高級別靶橱,按照ACID的隔離級別,可阻止幻讀、不可重復(fù)讀以及幻讀关霸,但會影響性能
7.Spring事務(wù)中的事務(wù)傳播行為
支持當(dāng)前事務(wù)的情況:
REQUIRED:如果存在則加入該事務(wù)传黄;如果沒有,則創(chuàng)建一個新事務(wù)队寇;
SUPPORTS:如果存在則加入該事務(wù)膘掰;如果沒有,則以非事務(wù)的方式繼續(xù)運行
MANDATORY:如果當(dāng)前存在事務(wù)佳遣,則加入該事務(wù);如果當(dāng)前沒有事務(wù)识埋,則拋出異常。
不支持當(dāng)前事務(wù)的情況:
REQUIRES_NEW:創(chuàng)建一個新的事務(wù)苍日,如果當(dāng)前存在事務(wù)惭聂,則把當(dāng)前事務(wù)掛起。
NOT_SUPPORTED:以非事務(wù)方式運行相恃。如果當(dāng)前存在事務(wù)辜纲,則把當(dāng)前事務(wù)掛起。
PROPAGATION_NEVER:以非事務(wù)方式運行拦耐,如果當(dāng)前存在事務(wù)耕腾,則拋出異常