對Spring框架的一些問題的理解

2021-10-11 06:08:47 字數 3183 閱讀 5897

spring 的核心是乙個輕量級(lightweight)的容器(container)。

spring是實現ioc(inversion of control)容器和非入侵性(no intrusive)的框架。

spring提供aop(aspect-oriented programming)概念的實現方式。

spring提供對持久層(persistence)、事物(transcation)的支援。

spring提供了對現存的各種框架(structs、jsf、hibernate、ibatis、webwork等)相整合的方案。

springioc 負責建立物件,管理物件(通過依賴注入),裝配物件,配置物件,並且管理這些物件的整個生命週期

控制反轉(inversion of control,縮寫為ioc):元件以一些預定好的方式接收來自容器的資源注入。

依賴注入: 在應用程式中的元件需要獲取資源時,傳統的方式是元件主動去建立需要的資源;反轉控制的思想完全顛覆了應用程式元件獲取資源的方式,反轉了資源的獲取方向,改由容器建立,並主動的將資源推送給需要的元件,開發人員不需要知道容器是如何建立資源物件的,只需要提供接收資源的方式即可。

aop(aspect-orientedprogramming,面向切面程式設計),可以說是oop(object-oriented programing,物件導向程式設計)的補充和完善。

它利用一種稱為「橫切」的技術,剖解開封裝的物件內部,並將那些影響了多個類的公共行為封裝到乙個可重用模組,並將其名為「aspect」,即方面。所謂「方面」,簡單地說,就是將那些與業務無關,卻為業務模組所共同呼叫的邏輯或責任封裝起來,便於減少系統的重複**,降低模組間的耦合度,並有利於未來的可操作性和可維護性。

應用場景: 許可權認證、通知、日誌、事務處理

@before:前置通知,在呼叫目標方法之前執行通知定義的任務

@after:後置通知,在目標方法執行結束後,無論執行結果如何都執行通知定義的任務

@after-returning:在目標方法返回後執行,執行成功之後

@after-throwing:異常通知,如果目標方法執行過程中丟擲異常,則執行通知定義的任務

@around:環繞通知,在目標方法執行前和執行後,都需要執行通知定義的任務。

singleton : 在ioc容器中只存在乙個bean例項。bean以單例方式存在

prototype: 每次從容器中呼叫bean時都返回乙個新的例項

request: 每次http請求都會建立乙個新的bean

session:同乙個session共享乙個bean,不同的session使用不同的bean

global-session: 一般用於protlet

例項化bean instantiation(預設)

設定屬性賦值 populate(預設)

前置處理器(開發人員自定義方法)

初始化 initialization (init (開發人員自定義方法))

後置處理器(開發人員自定義方法)

使用bean(預設)

destory(開發人員自定義方法)

銷毀bean destruction(預設)

2.**設計模式 : spring aop 功能的實現。

3.單例設計模式 : spring 中的 bean 預設都是單例的。

4.模板方法模式 : spring 中 jdbctemplate、hibernatetemplate 等以 template 結尾的對資料庫操作的類,它們就使用到了模板模式。

5.包裝器設計模式 : 我們的專案需要連線多個資料庫,而且不同的客戶在每次訪問中根據需要會去訪問不同的資料庫。這種模式讓我們可以根據客戶的需求能夠動態切換不同的資料來源。

6.觀察者模式: spring 事件驅動模型就是觀察者模式很經典的乙個應用。

7.介面卡模式 :spring aop 的增強或通知(advice)使用到了介面卡模式、spring mvc 中也是用到了介面卡模式適配controller。

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

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

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

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

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

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

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

預設級別: 預設和資料庫保持一樣的隔離級別。

1.讀未提交:read_uncommitted:就是乙個事務可以讀取另乙個未提交事務的資料。

2.讀已提交:read_committed:就是乙個事務要等另乙個事務提交後才能讀取資料,可以避免髒讀。

3.重複讀:repeatable_read:就是在開始讀取資料(事務開啟)時,不再允許修改操作,可以避免髒讀,不可重複讀。

4.序列化:serializable:最高的事務隔離級別,在該級別下,事務序列化順序執行,可以避免髒讀、不可重複讀與幻讀。但是這種事務隔離級別效率低下,比較耗資料庫效能,一般不使用。

requires:當前方法被另乙個事務方法呼叫時合併成乙個事務;

requires_new:當前方法必須啟動乙個新事務並在自己的事務內執行,若有事務在執行則將它掛起

整合ssh框架遇到的一些問題

輕鬆理解aop思想 面向切面程式設計 orm框架 只要提供了持久化類與表的對映關係,orm框架在執行時就能參照對映檔案的資訊,把物件持久化到資料庫中。當前orm框架主要有五種 hibernate nhibernate ibatis,mybatis,eclipselink,jfinal。框架 1554...

搭建dubbo框架的遇到的一些問題

1 tomcat伺服器如果啟動時卡住,也不報錯,在所執行的專案中加上log4j.properties檔案。2 dubbo引用服務時,ip位址必須正確,不然連線不上。原因 dubbo admin.war和你所使用的jdk版本不對,在自己所用的jdk環境下打包。啟動zookeeper root loca...

Excel的一些問題

1,excel列印紙張設定16k的問題 excel並沒有象word那樣在頁面設定中提供16開紙型的選項,如果手工重調,又會非常麻煩。解決這個問題就是為excel手工新增16開紙支援,但這個任務需要在 控制面板 的 印表機和傳真 中完成。在印表機裡面新增16開紙型 選擇乙個印表機後,從 檔案 選單中選...