讀Spring 2 5 6 原始碼學匿名類的使用

2021-08-31 06:32:24 字數 2373 閱讀 7825

最近開始重新學習spring。在研究spring開發包自帶的例子jpetstore時,遇到了匿名類的使用,感覺新鮮,於是擇其一二處,以供日後反芻。

在 org.springframework.orm.ibatis 包中,有乙個類叫sqlmapclienttemplate,它是用spring整合ibatis對資料庫進行操作的乙個工具類。瀏覽一下,其主要提供了對資料庫的各種「增查改刪」的操作。

[b]增[/b]:

public object insert(string statementname) throws dataacces***ception

public object insert(final string statementname, final object parameterobject) throws dataacces***ception });

}

[b]查[/b]:

public list queryforlist(string statementname) throws dataacces***ception

public list queryforlist(final string statementname, final object parameterobject)

throws dataacces***ception

});}

[b]改[/b]:

public int update(string statementname) throws dataacces***ception

public int update(final string statementname, final object parameterobject)

throws dataacces***ception

});return result.intvalue();

}

[b]刪[/b]:

public int delete(string statementname) throws dataacces***ception

public int delete(final string statementname, final object parameterobject)

throws dataacces***ception

});return result.intvalue();

}

從以上諸方法可以看出,在spring中使用了匿名類,使這一經典框架**更加簡潔美觀。如果僅僅是**的簡潔美觀,不能用,那就這樣煞費苦心的設計就成了花拳繡腿了。我們可以注意到,以上所有的**中所有的匿名類都實現了乙個介面,那就是同一包(org.springframework.orm.ibatis)下的sqlmapclientcallback。這個介面只有乙個方法,

object doinsqlmapclient(sqlmapexecutor executor) throws sqlexception;

上述匿名類實現了這一介面,重寫了上述方法。 之後工具類sqlmapclienttemplate利用

public object execute(sqlmapclientcallback action) throws dataacces***ception

呼叫了匿名類實現的介面方法[b]doinsqlmapclient[/b]。**如下:

public object execute(sqlmapclientcallback action) throws dataacces***ception

connection ibatiscon = null;

try

}else }}

catch (sqlexception ex)

// execute given callback...

try

catch (sqlexception ex)

finally

else }}

catch (throwable ex)

}// processing finished - potentially session still to be closed.

}finally }}

[b]注意此段**中46行return action.doinsqlmapclient(session);[/b]

spring原始碼分析 spring原始碼分析

1.spring 執行原理 spring 啟動時讀取應用程式提供的 bean 配置資訊,並在 spring 容器中生成乙份相應的 bean 配置登錄檔,然後根據這張登錄檔例項化 bean,裝配好 bean 之間的依賴關係,為上 層應用提供準備就緒的執行環境。二 spring 原始碼分析 1.1spr...

openssl sha256演算法原始碼

openssl中關於sha256演算法最關鍵的 檔案有sha.h,sha256.c,md32 common.h,crypto.h等等。1 sha256演算法最關鍵的檔案sha256.c。檢視這個檔案可以看到openssl如何計算sha256值 unsigned char sha256 const u...

《讀spring原始碼》7註解 Scope掃瞄規則

ioc容器 多例項 僅當bean被使用的時候才建立 單例項 建立ioc容器的時候例項就會被建立 如下是 scope的註解 結構 測試 預設情況下多次取物件是不是 取到的同乙個 package com.enjoy.cap3 import com.enjoy.cap1.person import com...