Spring常見面試題二

2022-08-24 21:15:10 字數 2189 閱讀 4143

一、spring框架中的單例beans是執行緒安全的麼

spring框架並沒有對單例bean進行任何多執行緒的封裝處理。關於單例bean的執行緒安全和併發問題需要開發者自行去搞定。但實際上,大部分的spring bean並沒有可變的狀態(比如serview類和dao類),所以在某種程度上說spring的單例bean是執行緒安全的。如果你的bean有多種狀態的話(比如 view model 物件),就需要自行保證執行緒安全。最淺顯的解決辦法就是將多型bean的作用域由「singleton」變更為「prototype」。

二、spring如何處理執行緒併發問題

在一般情況下,只有無狀態的bean才可以在多執行緒環境下共享,在spring中,絕大部分bean都可以宣告為singleton作用域,因為spring對一些bean中非執行緒安全狀態採用threadlocal進行處理,解決執行緒安全問題。threadlocal和執行緒同步機制都是為了解決多執行緒中相同變數的訪問衝突問題。同步機制採用了「時間換空間」的方式,僅提供乙份變數,不同的執行緒在訪問前需要獲取鎖,沒獲得鎖的執行緒則需要排隊。而threadlocal採用了「空間換時間」的方式。threadlocal會為每乙個執行緒提供乙個獨立的變數副本,從而隔離了多個執行緒對資料的訪問衝突。因為每乙個執行緒都擁有自己的變數副本,從而也就沒有必要對該變數進行同步了。threadlocal提供了執行緒安全的共享物件,在編寫多執行緒**時,可以把不安全的變數封裝進threadlocal。

三、spring 框架中都用到了哪些設計模式?

1,工廠模式:beanfactory就是簡單工廠模式的體現,用來建立物件的例項;

2,單例模式:bean預設為單例模式。

3,**模式:spring的aop功能用到了jdk的動態**和cglib位元組碼生成技術;

4,模板方法:用來解決**重複的問題。比如. resttemplate, jmstemplate, jpatemplate。

四、spring事務的實現方式和實現原理:

spring事務的本質其實就是資料庫對事務的支援,沒有資料庫的事務支援,spring是無法提供事務功能的。真正的資料庫層的事務提交和回滾是通過binlog或者redo log實現的。

1、spring事務的種類:

spring支援程式設計式事務管理和宣告式事務管理兩種方式:

①程式設計式事務管理使用transactiontemplate。

②宣告式事務管理建立在aop之上的。其本質是通過aop功能,對方法前後進行攔截,將事務處理的功能編織到攔截的方法中,也就是在目標方法開始之前加入乙個事務,在執行完目標方法之後根據執**況提交或者回滾事務。

2,spring的事務傳播行為:

spring事務的傳播行為說的是,當多個事務同時存在的時候,spring如何處理這些事務的行為。

1,propagation_required:如果當前沒有事務,就建立乙個新事務,如果當前存在事務,就加入該事務,該設定是最常用的設定。

2, propagation_supports:支援當前事務,如果當前存在事務,就加入該事務,如果當前不存在事務,就以非事務執行。

3,propagation_mandatory:支援當前事務,如果當前存在事務,就加入該事務,如果當前不存在事務,就丟擲異常。

4,propagation_requires_new:建立新事務,無論當前存不存在事務,都建立新事務。

5,propagation_not_supported:以非事務方式執行操作,如果當前存在事務,就把當前事務掛起。

6,propagation_never:以非事務方式執行,如果當前存在事務,則丟擲異常。

7,propagation_nested:如果當前存在事務,則在巢狀事務內執行。如果當前沒有事務,則按required屬性執行。

3、spring中的隔離級別:

1,isolation_default:這是個 platfromtransactionmanager 預設的隔離級別,使用資料庫預設的事務隔離級別。

2,isolation_read_uncommitted:讀未提交,允許另外乙個事務可以看到這個事務未提交的資料。

3,isolation_read_committed:讀已提交,保證乙個事務修改的資料提交後才能被另一事務讀取,而且能看到該事務對已有記錄的更新。

4,isolation_repeatable_read:可重複讀,保證乙個事務修改的資料提交後才能被另一事務讀取,但是不能看到該事務對已有記錄的更新。

5,isolation_serializable:乙個事務在執行的過程中完全看不到其他事務對資料庫所做的更新。

Spring常見面試題

一 spring mvc工作原理二 為什麼要用spring 1 spring能很好的與各大框架進行整合 2 建立物件時,如果我們不用spring需要用工廠模式來建立,這個spring相當於工廠模式已經幫我們做了建立物件的功能 ioc 依賴注入 3 在用hibernate的時候,如果不用spring每...

Spring常見面試題

spring 面試題分析 1.開發中主要使用 spring 的什麼技術 ioc 容器管理各層的元件 使用 aop 配置宣告式事務 整合其他框架.2.簡 述 aop 和 ioc 概 念 aop aspect oriented program,面向 方面 切面的程式設計 filter 過濾器 也是一種 ...

Spring常見面試題

簡化開發,di依賴關係一目了然,ioc容器管理好系統中的bean 相容成熟的框架,hibernate mybatis shiro 各種資料型別訪問框架 模組化設計,即插即用,按需分配 自帶測試元件 宣告式事務,將非功能性 和功能性 分離,事務管理提前宣告 過度設計嫌疑,完美分離了servlet和普通...