1.MyBatis:java
首先看MyBatis執行流程:spring
2.Spring:數據庫
1.工廠模式:
Spring使用工廠模式能夠經過 或 建立 bean 對象。
BeanFactory :延遲注入(getBean的時候纔會注入),相比於BeanFactory來講會佔用更
少的內存,程序啓動速度更快。
ApplicationContext :容器啓動的時候,無論你用沒用到,一次性建立全部 bean 。
2.單例模式:
Spring 中 bean 的默認做用域就是 singleton(單例)的。 註解:
3.代理模式:
AOP中:JDK,CGLIB兩種動態代理,BeanFactoryApplicationContext@Scope(value = "singleton")
4.模板模式:
、 等以 Template 結尾的對數據庫操做的類jdbcTemplatehibernateTemplate
AdvisorAdapter,Spring預約義的通知要經過對應的適配器,適配成 MethodInterceptor
接口(方法攔截器)類型的對象。
spring MVC DispatcherServlet
根據請求信息調用 HandlerMapping
,解析請求對應的 Handler
。解析到對應的 Handler
(也就是咱們日常說的 Controller
控制器)後,開始由HandlerAdapter
適配器處理。HandlerAdapter
做爲指望接口,具體的適配器實現類用於對目標類進行適配,Controller
做爲須要適配的類。
觀察者模式:mybatis
是一種對象行爲型模式。它表示的是一種對象與對象之間具備依賴關係,當一個對象發生改變的時候,這個對象所依賴的對象也會作出反應。Spring 事件驅動模型就是觀察者模式很經典的一個應用。Spring 事件驅動模型很是有用,在不少場景均可以解耦咱們的代碼。好比咱們每次添加商品的時候都須要從新更新商品索引,這個時候就能夠利用觀察者模式來解決這個問題。app
Spring事件流程:框架
定義一個事件: 實現一個繼承自 ApplicationEvent,而且寫相應的構造函數;
定義一個事件監聽者:實現 ApplicationListener 接口,重寫 onApplicationEvent() 方法;
使用事件發佈者發佈消息: 能夠經過 ApplicationEventPublisher 的 publishEvent() 方法發佈消息。
Spring AOP 和 AspectJ AOP 有什麼區別?
Sprin.g AOP 屬於運行時加強,而 AspectJ 是編譯時加強。 Spring AOP 基於代理(Proxying),而 AspectJ 基於字節碼操做(Bytecode Manipulation)。函數
Spring AOP 已經集成了 AspectJ ,AspectJ 應該算的上是 Java 生態系統中最完整的 AOP 框架了。AspectJ 相比於 Spring AOP 功能更增強大,可是 Spring AOP 相對來講更簡單,若是咱們的切面比較少,那麼二者性能差別不大。可是,當切面太多的話,最好選擇 AspectJ ,它比Spring AOP 快不少。性能
3.SpringMVC:ui
*責任鏈模式:
DispatcherServlet這個核心類中使用到了HandlerExecutionChain這個類,他就是責任鏈模式實行的具體類。
組合模式:
DelegatingWebMvcConfiguration類
*適配器模式:
HandlerAdapter接口
策略模式:
DispatchServlet中的初始化組件中,用到了getDefaultStrategies方法,來決定不一樣組件的默認類型以實現組件的初始化操做。
建造者模式:
springMVC在構建UriComponents的內容時,就用到了建造者模式