Unix現狀與未來 CSDN對我的採訪

2021-04-16 13:22:30 字數 3639 閱讀 9453

用picocontainer

和nanning

實現事務管理

是constructor injector

的ioc

容器。nanning

是dynamic aop

的一種實現。專案中我用

pico

作為我的微核心,在某些地方需要用到

aop,最典型的是:事務管理(

transaction manager

)。 首先考慮應用的前提,乙個

dao需要進行資料庫操作並需要事務。下面是兩個介面宣告:

publicinte***ce

daopublicinte***ce

txmanager

如果用oo的實現方法,可能是要讓

sampledao

這個實現類同時實現兩個介面等。按照單一職責原則,

sampledao

不應該了解事務管理,或者,某種情況下,不需要事務處理,這時候應該可以關閉事務。

這裡引入

aspect

(方面)來負責事務處理。或者說,事務其實是

service

的乙個方面。

但是,乙個問題是,事務往往和資料庫相關。想要控制事務,必須要能夠啟動事務的

connection,session

,transaction

等等。必須把這些東西同時傳遞給

service

和txmanager

publicinte***ce

objectreference

publicclass

databasereference

implements

objectreference

objcet

get()

void

set(

object

obj)

} txmanager

的實現類可以擁有乙個

databasereference

的例項用來獲取和

connection

相關的物件。

service

的例項也要得到同乙個

databasereference

,這樣txmanager

控制同乙個

connection

的事務才有效果。

示例如下,系統中我是使用的

hibernate

的session

publicclass

txmanagerimpl

implements

txmanager

publicvoid

begin

()publicvoid

commit

()publicvoid

rollback()}

publicclass

sampledao

implements

daovoid

update()}

dao和txmanager

之間有了紐帶:

databasereference

。然而,如果要控制事務,還需要乙個控制類,將所有的

dao操作置於事務管理內。

publicclass

transactionaspect

implements

aspect

publicvoid

introduce

(aspectinstance

arg0

)publicvoid

advise

(aspectinstance

instance

)catch

(exceptione)

}});}}

這時就可以建立乙個呼叫的例項了,這就需要

picocontainer

來負責物件的建立和管理:

mutablepicocontainer

pico

=new

defaultpicocontainer

(new

cachingcomponentadapte***ctory

(new

nanningcomponentadapte***ctory

()));

pico

.registercomponentimplementation

(txmanager

.class,

txmanagerimpl

.class);

pico

.registercomponentimplementation

(transactionaspect

.class,

transactionaspect

.class);

pico

.registercomponentimplementation

(sampledao

.class);

pico

.getcomponentinstances

();dao

dao=

(dao)

pico

.getcomponentinstance

(sampledao

.class);

dao.

update

(); 上面用到的

nanningcomponentadapte***ctory

,是nanocontainer

中nanning

包提供,負責將

nanning

例項整合到

picocontainer

。 從

log中可以看到,

dao的執行前後分別執行了

begin

和commit

,這樣我們就整合了

aop與

ioc。

本文需要讀者有一定的

aop和

iocblog

**。

本文由冰雲完成,首發於

csdn

,作者保留中文版權。

未經許可,不得使用於任何商業用途。

如需聯絡請發郵件:

icecloud(at)sina.com

E learning的現狀與未來

e learning e learning pc上網,通過網路進行學習的一種全新的學習方式。當然,這種學習方式離不開由多 網路學習資源 網上學習社群及網路技術平台構成的全新的網路學習環境。在網路學習環境中,匯集了大量資料 檔案資料 程式 教學軟體 興趣討論組 新聞組等學習資源,形成了乙個高度綜合整合...

CaptCha的現狀與未來

有乙個機會,朋友推薦乙個創業的哥們給我認識,方向就是驗證碼識別,當時以各種不明顯的陳述推諉掉,起初是職業道德的約束,到後來才發現,這其實是乙個無比困難的問題。可以利用現有的api很快地做好乙個可以執行的演示程式,但如果要改進,著實困難。什麼是驗證碼 驗證碼 captcha 其實並不是各位總是在不同 ...

實體關係抽取的現狀與未來

來到 2019 年的今天,深度學習的諸多侷限性也慢慢得到廣泛認知。對於自然語言處理而言,要做到精細深度的語義理解,單純依靠資料標註與算力投入無法解決本質問題。如果沒有先驗知識的支援,中國的桌球誰都打不過 與 中國的足球誰都打不過 在計算機看來語義上並沒有巨大差異,而實際上兩句中的 打不過 意思正好相...