假設大家都想要把使用者**塞到乙個框架裡。侵入式的做法就是要求使用者**「知道」框架的**,表現為使用者**需要繼承框架提供的類。非侵入式則不需要使用者**引入框架**的資訊,從類的編寫者角度來看,察覺不到框架的存在。
例如:
使用struts的時候,我需要繼承一些struts的類,這時struts侵入到了我的**裡。
使用spring,編寫一些業務類的時候不需要繼承spring特定的類,通過配置完成依賴注入後就可以使用,此時,spring就沒有侵入到我業務類的**裡。
優缺點:
侵入式讓使用者**產生對框架的依賴,這些**不能在框架外使用,不利於**的復用。但侵入式可以使使用者跟框架更好的結合,更容易更充分的利用框架提供的功能。
非侵入式的**則沒有過多的依賴,可以很方便的遷移到其他地方。但是與使用者**互動的方式可能就比較複雜。
任何框架或者第三方類庫,要講到完全沒有侵入是不可能的。對於struts2來講,他的設計還是挺好的,你可以用很多種方式來用struts2,如果你為了方便而繼承了struts2的基類,那麼你的設計本身就是高侵入的,如果你沒繼承struts,只是用了乙個過濾器、乙個get/set和乙個xml檔案,那麼這種程度的侵入基本上可以忽略不計。所以說struts2是非侵入是有道理的。
全面理解Java記憶體模型 侵立刪
1.首先,執行緒a把本地記憶體a中更新過的共享變數重新整理到主記憶體中去。2.然後,執行緒b到主記憶體中去讀取執行緒a之前已更新過的共享變數。1.共享物件對各個執行緒的可見性 2.共享物件的競爭現象 指令級並行的重排序 如果不存l在資料依賴性,處理器可以改變語句對應機器指令的執行順序。記憶體系統的重...
對Struts的理解
1.struts是乙個基於mvc模式的web層框架,其實也是乙個servlet,是乙個名為actionservlet的servelt。在web.xml檔案中我們將符合某些特徵的請求交給servelt,具體分給那個action要依據struts config.xml檔案來決定。2.actionserv...
Struts是怎麼執行的?
然後actionservlet根據struts config.xml的配置資訊,呼叫loginaction物件去處理這個請求,在此之前,它會將頁面表單的請求資料封裝到loginactionform物件中,並傳遞給loginaction loginaction返回乙個actionforward物件,包...