最近開始重新學習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...