锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
]]>
]]>
]]>
]]>
鎴戞槸涓涓?/span>Java紼嬪簭鍛橈紝Java鍐欑殑澶氫簡錛岃嚜鐒惰岀劧鎯沖線J2EE錛堢幇鍦ㄥ彨JavaEE浜嗭級鏂歸潰鍙戝睍銆備簬鏄垜寮濮嬬炕鐪?/span>J2EE鏂歸潰鐨勮祫鏂欙紝鍦ㄧ綉涓婃煡錛屽湪璁哄潧闂傛渶鍚庢垜鏌ュ埌涓澶у爢璇嶏紝鍍忎粈涔?/span>Struts銆?/span>Webwork銆?/span>Spring銆?/span>Hibernate銆?/span>EJB絳夌瓑錛岃繖浜涜兘鍙笂鍚嶅瓧鐨勯兘鏄墝瀛愬ぇ鐨勶紝鏇存湁涓嶈鍏舵暟鐨勬垜鍙笉涓婃潵鍚嶅瓧鎴栬呮牴鏈氨娌℃湁鍚榪囩殑銆備簬鏄垜澶ф姣忎釜閮界湅鐪嬨傜湅鐨勬渶澶氱殑鏄?/span>Struts錛屽綋鎴戠湅鍒扮暐涓烘繁鍏ョ殑閮ㄥ垎鍚庯紝鍚勭鍚勬牱鐨勮璁℃ā寮忎竴鑲¤剳鍎跨殑鍏ㄩ兘鍐掍簡鍑烘潵銆備簬鏄垜寮濮嬪涔犺璁℃ā寮忥紝璧峰垵鎴戞湰鏉ユ兂紕板埌涓涓ā寮忓涓涓備絾鏄湅鐫鐪嬬潃錛屽ソ澶氭ā寮忓湪涓璧鋒販鐢紝浜庢槸鎴戜笉寰椾笉鍋滀笅鏉ヨ姳濂藉鏃墮棿鏉ュ涔犮傛渶鍚庝笅浜嗕釜鍐沖績騫茶剢鎶婃ā寮忓叏閮ㄦ潵涓閬嶇畻浜嗐傛墍浠ユ湁浜嗘垜鐨勮璁℃ā寮忎竴浜涘垪鏂囩珷銆傦紙鍏充簬璁捐妯″紡鐨勬枃绔犺鐪嬶細http://blog.csdn.net/qutr/category/125050.aspx鍜?/span>http://blog.csdn.net/qutr/category/166495.aspx錛?/span>
鍦ㄨ璁℃ā寮忕湅瀹屼互鍚庯紝鎴戝繖浜嗕竴孌墊椂闂達紝J2EE鐨勫涔犱篃灝卞仠浜嗕笅鏉ャ備箣鍚庢垜鍙堝皢J2EE鐨勫涔犳彁涓婁簡瀛︿範鏃ョ▼銆備絾鏄幇鍦ㄦ垜鏈変簺榪瘋尗浜嗭紝榪欎箞涓澶у爢鍚嶈瘝浠栦滑鍜?/span>J2EE鍒板簳鏄粈涔堝叧緋伙紝浠栦滑涔嬮棿鍒板簳鏈変粈涔堟牱鐨勮仈緋諱互鍙婄敤鍝釜濂斤紝涓嶇敤鍝釜濂斤紵榪欎簺闂璁╂垜鍗佸垎鐨勭儲鎭箋?/span>
鐩村埌鏈鍚庢垜璇諱簡Rod Johnson錛堝叧浜?/span>Rod鎴戝氨涓嶈浜?/span>Spring鐨勫垱濮嬩漢錛屼絾緗戜笂鏈変漢榪欐牱璇勪環浠栵細“鎴戝Rod鐨勬暚浣╀笉鏄洜涓轟粬鍙戞槑浜?/span>Spring錛岃屾槸浠栧J2EE寮鍙戠殑娣卞埢鐞嗚В”錛?/span>鐨勬枃绔?strong>銆?/strong>Introduce To Spring Framework銆?/span>錛?span style="color: #3366ff">鑻辨枃鍘熸枃錛?/span>http://www.theserverside.com/tt/articles/article.tss?l=SpringFramework錛涗腑鏂囩炕璇戯細http://forum.javaeye.com/viewtopic.php?t=4919錛夊悗鎴戞墠娓愭笎鏄庣櫧浜嗕竴浜涙蹇碉紝Rod鐨勮繖綃囨枃绔犵浉褰撶簿褰╋紝浠庡ご鍒板熬璁茶В浜?/span>Spring鐨勫姛鑳斤紝璁茶В浜?/span>Spring鐨勫悇涓ā鍧楃殑瀹炵幇鎰忓浘銆傚緱鍒扮殑緇撹鏄細Spring鏄釜灝忚屽叏鐨勮交閲忕駭J2EE Framework銆傚師鏉ヨ鍧涗笂鍜岀綉涓婂ぇ瀹惰鐨?/span>Struts錛?/span>Webwork錛?/span>+Spring+Hibernate鏄埄鐢ㄤ簡Struts錛?/span>Webwork錛夌殑MVC鍔熻兘錛?/span>Spring鐨?/span>Ioc鍜?/span>Aop鍔熻兘榪樻湁Hibernate鐨勬暟鎹簱鎿嶄綔鍔熻兘銆傝嚦姝ゆ垜鍐沖畾浠?/span>Spring涓哄垏鍏ョ偣鏉ュ涔?/span>J2EE鎶鏈?/span>
浜屻佸叧浜庛?/span>Spring In Action銆?/span>
鎴戣寰楀啓榪欐湰涔︾殑涓や綅浣滆呯湡鏄袱涓墰浜猴紝涓嶄粎瀵?/span>Spring鐞嗚В鐨勫ソ錛岃屼笖浼間箮鎳傚緱蹇冪悊瀛︾殑鐭ヨ瘑銆備粬浠姄浣忎簡璇昏呯殑蹇冪悊錛屽皢涓浜涘熀鏈蹇佃瑙g殑姣旇緝娓呮錛岃屼笖瀵逛竴浜涘悕璇嶅Struts錛?/span>Webwork絳変綔浜嗙畝鐭殑瑙i噴鍜屼笌Spring鐨勬瘮杈冦傝癄閲婁簡瀛︿範鑰呭績涓殑鐤戞儜錛岃嚜鐒惰繖鏈功娣辨繁鐨勫惛寮曚簡鎴戙?/span>
鍦ㄤ功涔板洖鏉ョ殑鍓嶅嚑澶╅噷鎴戠湅寰楅潪甯稿揩錛屽紑濮嬬湅寰楀緢榪囩樉錛屾笎娓愮殑瓚婄湅瓚婅糠緋婏紝瓚婄湅綰︾湅涓嶆噦浜嗐傛渶鍚庢垜鍙戠幇鍘熷洜灝辨槸錛氬厜鐪嬩笉緇冮犳垚鐨勩備簬鏄垜涓嬪畾鍐沖績錛氫笉鍋氳崏涓婇錛岃笍韙忓疄瀹炲悜鍓嶈繘銆?/span>
涓轟粈涔堣鍐欏涔犵瑪璁幫紵鎴戣寰楄繖鏄潱淇冨己榪垜鍧氭寔瀛︿範鐨勫敮涓閫斿緞錛堟垜榪欎釜浜烘瘮杈冩噿J錛夈?/span>
鏁存湰涔︾殑瀛︿範絎旇鎴戜細浠ョ珷涓哄崟浣嶏紝姣忔鍦?/span>Blog涓婂彂甯冧竴绔犵殑鍐呭銆傛湁浜涚珷鐨勫唴瀹瑰彲鑳藉お澶氭垨鑰呭鎴戞潵璇村お闅炬垜浼氬ソ闀挎椂闂存墠鎶婂涔犵瑪璁板啓鍑烘潵錛涙湁浜涚珷鐨勫唴瀹瑰彲鑳藉鎴戞潵璇存殏鏃舵病浠涔堢敤澶勶紝鎴戝彲鑳戒細涓嶅啓鎴栬呴潪甯哥畝鍗曠殑鎽樺綍銆傜綉涓婂ソ澶氫漢鍙嶆槧鍑虹増紺懼拰浣滆呬笉璐熻矗浠繪病鏈夊皢涔︿腑鐨勬簮浠g爜鍛堢幇緇欒鑰呫傛垜鎯寵繖鏄潖浜嬶紝浣嗘槸鍙嶈繃鏉ヤ篃鏄ソ浜嬨傛病鏈夊畬鏁寸殑婧愪唬鐮佹垜浠濂藉彲浠ヨ嚜宸卞啓鍑烘潵錛岄偅鏍鋒洿浼氬姞娣卞Spring鐭ヨ瘑鐨勭悊瑙c傚湪鏁翠釜鐨勫涔犺繃紼嬩腑鎴戜細璇曠潃鎶婁綔鑰呮墍璇寸殑鐭ヨ瘑鐐瑰拰鍚勬ā鍧楋紝鍚勪釜綾葷殑浠g爜瀹屾暣鐨勫啓鍑烘潵璐村埌鏂囩珷涓紝榪樹細鍋氫竴浜涜緇嗙殑瑙i噴銆傛湁浜涘疄鍦ㄩ噸澶嶇殑鍐呭錛屾垜鍙垪鍑轟唬鐮佺墖孌碉紝鍋氫竴浜涜В閲娿?/span>
涓夈佸皬緇?/span>
瀵硅涔︾殑鏁翠釜瀛︿範榪囩▼鎴戜笉浼氬氨鍏夌湅榪欎竴鏈功錛屾垜浼氬弬鑰冨叾瀹冧竴浜涗功鎴栨枃绔犮傝繖浜涗功鏄細
l 銆婄簿閫?/span>Spring銆?/span> by緗楁椂椋?/span>
l 銆?/span>Spring寮鍙戞寚鍗椼?/span> by 澶忔槙
l 銆?/span>Spring live涓枃鐗堛?/span>緲昏瘧鐧芥眽濂?/span>
l 銆?/span>Introduce To Spring Framework銆?/span>by Rod Johnson
l 銆?/span>Pro Spring銆?/span>(榪欐湰涔﹀凡緇忔湁涓枃鐗堜簡錛屽ソ鍍忎笉閿欏簲璇ュソ濂界湅鐪?/span>)
l 榪樻湁鍏跺畠涓浜涗功綾嶃佹枃绔犮?/span>
褰撳紩鐢ㄤ簡鍝湰涔︽垨鑰呭摢綃囨枃绔犵殑孌佃惤鎴戜細鏄庣‘琛ㄦ槑鍑哄錛屾垜鐨勬枃绔犳槸涓轟簡鑷垜瀛︿範鍜屼笌澶у浜ゆ祦鐨勶紝娌℃湁鐢ㄤ簬鍟嗕笟鐢ㄩ旓紝鎵浠ュ笇鏈涘ぇ瀹朵篃灝變笉瑕佸拰鎴戠籂緙犵増鏉冧簡J銆傚悓鏍峰紩鐢ㄦ垜鏂囩珷鐨勪釜浜烘垨緗戠珯錛屽笇鏈涗綘浠敞鏄庡嚭澶勩?/span>
鏈鍚庤涓鐐癸紝鎴戝啓銆?/span>Spring in Action銆嬭涔︾瑪璁頒笉鏄負浜嗗惛寮曠溂鐞冿紝鑰屾槸涓轟簡鐫d績鑷繁錛屽皢鏂囩珷鍙戣〃鍒?/span>Blog涓婃槸涓轟簡鍜屽ぇ瀹朵氦嫻侊紝甯屾湜楂樻墜鐪嬪埌澶氬鎸囩偣銆?/span>
褰撴垜浠皟鐢ㄤ竴涓熀浜?/span>Spring鐨?/span>Service鎺ュ彛鏂規硶錛堝UserService#addUser()錛夋椂錛屽畠灝嗚繍琛屼簬Spring綆$悊鐨勪簨鍔$幆澧冧腑錛?/span>Service鎺ュ彛鏂規硶鍙兘浼氬湪鍐呴儴璋冪敤鍏跺畠鐨?/span>Service鎺ュ彛鏂規硶浠ュ叡鍚屽畬鎴愪竴涓畬鏁寸殑涓氬姟鎿嶄綔錛屽洜姝ゅ氨浼氫駭鐢熸湇鍔℃帴鍙f柟娉曞祵濂楄皟鐢ㄧ殑鎯呭喌錛?/span>Spring閫氳繃浜嬪姟浼犳挱琛屼負鎺у埗褰撳墠鐨勪簨鍔″浣曚紶鎾埌琚祵濂楄皟鐢ㄧ殑鐩爣鏈嶅姟鎺ュ彛鏂規硶涓?/span>
浜嬪姟浼犳挱鏄?/span>Spring榪涜浜嬪姟綆$悊鐨勯噸瑕佹蹇碉紝鍏墮噸瑕佹ф庝箞寮鴻皟閮戒笉涓鴻繃銆備絾鏄簨鍔′紶鎾涓轟篃鏄璇В鏈澶氱殑鍦版柟錛屽湪鏈枃閲岋紝鎴戜滑灝嗚緇嗗垎鏋愪笉鍚屼簨鍔′紶鎾涓虹殑琛ㄧ幇褰㈠紡錛屾帉鎻″畠浠箣闂寸殑鍖哄埆銆?/span>
浜嬪姟浼犳挱琛屼負縐嶇被
Spring鍦?/span>TransactionDefinition鎺ュ彛涓瀹氫簡7縐嶇被鍨嬬殑浜嬪姟浼犳挱琛屼負錛屽畠浠瀹氫簡浜嬪姟鏂規硶鍜屼簨鍔℃柟娉曞彂鐢熷祵濂楄皟鐢ㄦ椂浜嬪姟濡備綍榪涜浼犳挱錛?/span>
琛?/span>1浜嬪姟浼犳挱琛屼負綾誨瀷
浜嬪姟浼犳挱琛屼負綾誨瀷 |
璇存槑 |
PROPAGATION_REQUIRED |
濡傛灉褰撳墠娌℃湁浜嬪姟錛屽氨鏂板緩涓涓簨鍔★紝濡傛灉宸茬粡瀛樺湪涓涓簨鍔′腑錛屽姞鍏ュ埌榪欎釜浜嬪姟涓傝繖鏄渶甯歌鐨勯夋嫨銆?/span> |
PROPAGATION_SUPPORTS |
鏀寔褰撳墠浜嬪姟錛屽鏋滃綋鍓嶆病鏈変簨鍔★紝灝變互闈炰簨鍔℃柟寮忔墽琛屻?/span> |
PROPAGATION_MANDATORY |
浣跨敤褰撳墠鐨勪簨鍔★紝濡傛灉褰撳墠娌℃湁浜嬪姟錛屽氨鎶涘嚭寮傚父銆?/span> |
PROPAGATION_REQUIRES_NEW |
鏂板緩浜嬪姟錛屽鏋滃綋鍓嶅瓨鍦ㄤ簨鍔★紝鎶婂綋鍓嶄簨鍔℃寕璧楓?/span> |
PROPAGATION_NOT_SUPPORTED |
浠ラ潪浜嬪姟鏂瑰紡鎵ц鎿嶄綔錛屽鏋滃綋鍓嶅瓨鍦ㄤ簨鍔★紝灝辨妸褰撳墠浜嬪姟鎸傝搗銆?/span> |
PROPAGATION_NEVER |
浠ラ潪浜嬪姟鏂瑰紡鎵ц錛屽鏋滃綋鍓嶅瓨鍦ㄤ簨鍔★紝鍒欐姏鍑哄紓甯搞?/span> |
PROPAGATION_NESTED |
濡傛灉褰撳墠瀛樺湪浜嬪姟錛屽垯鍦ㄥ祵濂椾簨鍔″唴鎵ц銆傚鏋滃綋鍓嶆病鏈変簨鍔★紝鍒欐墽琛屼笌PROPAGATION_REQUIRED綾諱技鐨勬搷浣溿?/span> |
褰撲嬌鐢?/span>PROPAGATION_NESTED鏃訛紝搴曞眰鐨勬暟鎹簮蹇呴』鍩轟簬JDBC 3.0錛屽茍涓斿疄鐜拌呴渶瑕佹敮鎸佷繚瀛樼偣浜嬪姟鏈哄埗銆?/span>
鍑犵瀹規槗寮曡搗璇В鐨勭粍鍚堜簨鍔′紶鎾涓?/span>
褰撴湇鍔℃帴鍙f柟娉曞垎鍒嬌鐢ㄨ〃1涓笉鍚岀殑浜嬪姟浼犳挱琛屼負錛屼笖榪欎簺鎺ュ彛鏂規硶鍙堝彂鐢熺浉浜掕皟鐢ㄧ殑鎯呭喌涓嬶紝澶ч儴鍒嗙粍鍚堥兘鏄竴鐩簡鐒訛紝瀹規槗鐞嗚В鐨勩備絾鏄紝涔熷瓨鍦ㄤ竴浜涘鏄撳紩璧瘋瑙g殑緇勫悎浜嬪姟浼犳挱鏂瑰紡銆?/span>
涓嬮潰錛屾垜浠氳繃涓や釜鍏蜂綋鐨勬湇鍔℃帴鍙g殑緇勫悎璋冪敤琛屼負鏉ョ牬瑙h繖涓闅劇偣銆傝繖涓や釜鏈嶅姟鎺ュ彛鍒嗗埆鏄?/span>UserService鍜?/span>ForumService錛?/span>UserSerice鏈変竴涓?/span>addCredits()鏂規硶錛?/span>ForumSerivce#addTopic()鏂規硶璋冪敤浜?/span>UserSerice#addCredits()鏂規硶錛屽彂鐢熷叧鑱旀ф湇鍔℃柟娉曠殑璋冪敤錛?/span>
public class ForumService {
private UserService userService;
public void addTopic(){鈶?/span>璋冪敤鍏跺畠鏈嶅姟鎺ュ彛鐨勬柟娉?/span>
//add Topic…
userService.addCredits();鈶?/span>琚叧鑱旇皟鐢ㄧ殑涓氬姟鏂規硶
}
}
宓屽璋冪敤鐨勪簨鍔℃柟娉?/span>
瀵?/span>Spring浜嬪姟浼犳挱琛屼負鏈甯歌鐨勪竴涓瑙f槸錛氬綋鏈嶅姟鎺ュ彛鏂規硶鍙戠敓宓屽璋冪敤鏃訛紝琚皟鐢ㄧ殑鏈嶅姟鏂規硶鍙兘澹版槑涓?/span>PROPAGATION_NESTED銆傝繖縐嶈鐐圭姱浜嗘湜鏂囩敓涔夌殑閿欒錛岃璁や負PROPAGATION_NESTED鏄笓涓烘柟娉曞祵濂楀噯澶囩殑銆傝繖縐嶈瑙i仐瀹充笉嫻咃紝鎵ф湁榪欑璇В鐨勫紑鍙戣呴敊璇湴璁や負錛氬簲灝介噺涓嶈Service綾葷殑涓氬姟鏂規硶鍙戠敓鐩鎬簰鐨勮皟鐢紝Service綾誨彧鑳借皟鐢?/span>DAO灞傜殑DAO綾伙紝浠ラ伩鍏嶄駭鐢熷祵濂椾簨鍔°?/span>
鍏跺疄錛岃繖縐嶉【铏戞槸瀹屽叏娌℃湁蹇呰鐨勶紝PROPAGATION_REQUIRED宸茬粡娓呮鍦板憡璇夋垜浠細浜嬪姟鐨勬柟娉曚細瓚沖“鑱槑”鍦板垽鏂笂涓嬫枃鏄惁宸茬粡瀛樺湪涓涓簨鍔′腑錛屽鏋滃凡緇忓瓨鍦紝灝卞姞鍏ュ埌榪欎釜浜嬪姟涓紝鍚﹀垯鍒涘緩涓涓柊鐨勪簨鍔°?/span>
渚濈収涓婇潰鐨勪緥瀛愶紝鍋囪鎴戜滑灝?/span>ForumService#addTopic()鍜?/span>UserSerice#addCredits()鏂規硶鐨勪簨鍔′紶鎾涓洪兘璁劇疆涓?/span>PROPAGATION_REQUIRED錛岃繖涓や釜鏂規硶灝嗚繍琛屼簬鍚屼竴涓簨鍔′腑銆?/span>
涓轟簡娓呮鍦拌鏄庤繖鐐癸紝鍙互灝?/span>Log4J鐨勬棩蹇楄緗負DEBUG綰у埆錛屼互瑙傚療Spring浜嬪姟綆$悊鍣ㄥ唴閮ㄧ殑榪愯鎯呭喌銆備笅闈㈠皢涓や釜涓氬姟鏂規硶閮借緗負PROPAGATION_REQUIRED錛?/span>Spring鎵杈撳嚭鐨勬棩蹇椾俊鎭涓嬶細
Using transaction object
[org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject@e3849c]
鈶?/span>涓?/span>ForumService#addTopic()鏂板緩涓涓簨鍔?/span>
Creating new transaction with name [com.baobaotao.service.ForumService.addTopic]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT
Acquired Connection [org.apache.commons.dbcp.PoolableConnection@dc41c5] for JDBC transaction
Switching JDBC Connection [org.apache.commons.dbcp.PoolableConnection@dc41c5] to manual commit
Bound value [org.springframework.jdbc.datasource.ConnectionHolder@ee1ede] for key [org.apache.commons.dbcp.BasicDataSource@4204] to thread [main]
Initializing transaction synchronization
Getting transaction for [com.baobaotao.service.ForumService.addTopic]
Retrieved value [org.springframework.jdbc.datasource.ConnectionHolder@ee1ede] for key [org.apache.commons.dbcp.BasicDataSource@4204] bound to thread [main]
Using transaction object [org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject@8b8a47]
鈶?/span>UserService#addCredits()綆鍗曞湴鍔犲叆鍒板凡瀛樺湪鐨勪簨鍔′腑錛堝嵆鈶?/span>澶勫垱寤虹殑浜嬪姟錛?/span>
Participating in existing transaction
Getting transaction for [com.baobaotao.service.UserService.addCredits]
Completing transaction for [com.baobaotao.service.UserService.addCredits]
Completing transaction for [com.baobaotao.service.ForumService.addTopic]
Triggering beforeCommit synchronization
Triggering beforeCompletion synchronization
Initiating transaction commit
鈶?/span>璋冪敤搴曞眰Connection#commit()鏂規硶鎻愪氦浜嬪姟
Committing JDBC transaction on Connection [org.apache.commons.dbcp.PoolableConnection@dc41c5]
Triggering afterCommit synchronization
Triggering afterCompletion synchronization
Clearing transaction synchronization
宓屽浜嬪姟
灝?/span>ForumService#addTopic()璁劇疆涓?/span>PROPAGATION_REQUIRED鏃訛紝UserSerice#addCredits()璁劇疆涓?/span>PROPAGATION_REQUIRED銆?/span>PROPAGATION_SUPPORTS銆?/span>PROPAGATION_MANDATORY鏃訛紝榪愯鐨勬晥鏋滈兘鏄竴鑷寸殑錛堝綋鐒訛紝濡傛灉鍗曠嫭璋冪敤addCredits()灝卞彟褰撳埆璁轟簡錛夈?/span>
褰?/span>addTopic()榪愯鍦ㄤ竴涓簨鍔′笅錛堝璁劇疆涓?/span>PROPAGATION_REQUIRED錛夛紝鑰?/span>addCredits()璁劇疆涓?/span>PROPAGATION_NESTED鏃訛紝濡傛灉搴曞眰鏁版嵁婧愭敮鎸佷繚瀛樼偣錛?/span>Spring灝嗕負鍐呴儴鐨?/span>addCredits()鏂規硶浜х敓鐨勪竴涓唴宓岀殑浜嬪姟銆傚鏋?/span>addCredits()瀵瑰簲鐨勫唴宓屼簨鍔℃墽琛屽け璐ワ紝浜嬪姟灝嗗洖婊氬埌addCredits()鏂規硶鎵ц鍓嶇殑鐐癸紝騫朵笉浼氬皢鏁翠釜浜嬪姟鍥炴粴銆傚唴宓屼簨鍔℃槸鍐呭眰浜嬪姟鐨勪竴閮ㄥ垎錛屾墍浠ュ彧鏈夊灞備簨鍔℃彁浜ゆ椂錛屽祵濂椾簨鍔℃墠鑳戒竴騫舵彁浜ゃ?/span>
宓屽浜嬪姟涓嶈兘澶熸彁浜わ紝瀹冨繀欏婚氳繃澶栧眰浜嬪姟鏉ュ畬鎴愭彁浜ょ殑鍔ㄤ綔錛屽灞備簨鍔$殑鍥炴粴涔熶細閫犳垚鍐呴儴浜嬪姟鐨勫洖婊氥?/span>
宓屽浜嬪姟鍜屾柊浜嬪姟
PROPAGATION_REQUIRES_NEW 鍜?/span> PROPAGATION_NESTED涔熸槸瀹規槗娣鋒穯鐨勪袱涓紶鎾涓恒?/span>PROPAGATION_REQUIRES_NEW 鍚姩涓涓柊鐨勩佸拰澶栧眰浜嬪姟鏃犲叧鐨?/span>“鍐呴儴”浜嬪姟銆傝浜嬪姟鎷ユ湁鑷繁鐨勭嫭绔嬮殧紱葷駭鍒拰閿侊紝涓嶄緷璧栦簬澶栭儴浜嬪姟錛岀嫭绔嬪湴鎻愪氦鍜屽洖婊氥傚綋鍐呴儴浜嬪姟寮濮嬫墽琛屾椂錛屽閮ㄤ簨鍔″皢琚寕璧鳳紝鍐呭姟浜嬪姟緇撴潫鏃訛紝澶栭儴浜嬪姟鎵嶇戶緇墽琛屻?/span>
鐢辨鍙錛?/span> PROPAGATION_REQUIRES_NEW 鍜?/span> PROPAGATION_NESTED 鐨勬渶澶у尯鍒湪浜庯細PROPAGATION_REQUIRES_NEW 灝嗗垱寤轟竴涓叏鏂扮殑浜嬪姟錛屽畠鍜屽灞備簨鍔℃病鏈変換浣曞叧緋伙紝鑰?/span> PROPAGATION_NESTED 灝嗗垱寤轟竴涓緷璧栦簬澶栧眰浜嬪姟鐨勫瓙浜嬪姟錛屽綋澶栧眰浜嬪姟鎻愪氦鎴栧洖婊氭椂錛屽瓙浜嬪姟涔熶細榪炲甫鎻愪氦鍜屽洖婊氥?/span>
鍏跺畠闇瑕佹敞鎰忛棶棰?/span>
浠ヤ笅鍑犱釜闂鍊煎緱娉ㄦ剰錛?/span>
1) 褰撲笟鍔℃柟娉曡璁劇疆涓?/span>PROPAGATION_MANDATORY鏃訛紝瀹冨氨涓嶈兘琚潪浜嬪姟鐨勪笟鍔℃柟娉曡皟鐢ㄣ傚灝?/span>ForumService#addTopic()璁劇疆涓?/span>PROPAGATION_MANDATORY錛屽鏋滃睍鐜板眰鐨?/span>Action鐩存帴璋冪敤addTopic()鏂規硶錛屽皢寮曞彂涓涓紓甯搞傛紜殑鎯呭喌鏄細addTopic()鏂規硶蹇呴』琚彟涓涓甫浜嬪姟鐨勪笟鍔℃柟娉曡皟鐢紙濡?/span>ForumService#otherMethod()錛夈傛墍浠?/span>PROPAGATION_MANDATORY鐨勬柟娉曚竴鑸兘鏄鍏跺畠涓氬姟鏂規硶闂存帴璋冪敤鐨勩?/span>
2) 褰撲笟鍔℃柟娉曡璁劇疆涓?/span>PROPAGATION_NEVER鏃訛紝瀹冨皢涓嶈兘琚嫢鏈変簨鍔$殑鍏跺畠涓氬姟鏂規硶璋冪敤銆傚亣璁?/span>UserService#addCredits()璁劇疆涓?/span>PROPAGATION_NEVER錛屽綋ForumService# addTopic()鎷ユ湁涓涓簨鍔℃椂錛?/span>addCredits()鏂規硶灝嗘姏鍑哄紓甯搞傛墍浠?/span>PROPAGATION_NEVER鏂規硶涓鑸槸琚洿鎺ヨ皟鐢ㄧ殑銆?/span>
3)褰撴柟娉曡璁劇疆涓?/span>PROPAGATION_NOT_SUPPORTED鏃訛紝澶栧眰涓氬姟鏂規硶鐨勪簨鍔′細琚寕璧鳳紝褰撳唴閮ㄦ柟娉曡繍琛屽畬鎴愬悗錛屽灞傛柟娉曠殑浜嬪姟閲嶆柊榪愯銆傚鏋滃灞傛柟娉曟病鏈変簨鍔★紝鐩存帴榪愯錛屼笉闇瑕佸仛浠諱綍鍏跺畠鐨勪簨銆?/span>
灝忕粨
鍦?/span>Spring澹版槑寮忎簨鍔$鐞嗙殑閰嶇疆涓紝浜嬪姟浼犳挱琛屼負鏄渶瀹規槗琚瑙g殑閰嶇疆欏癸紝鍘熷洜鍦ㄤ簬浜嬪姟浼犳挱琛屼負鍚嶇О錛堝PROPAGATION_NESTED錛氬祵濂楀紡浜嬪姟錛夊拰浠g爜緇撴瀯鐨勭被浼兼т笂錛堜笟鍔$被鏂規硶宓屽璋冪敤鍙︿竴涓笟鍔$被鏂規硶錛夈傝繖縐嶈瑙e湪寰堝Spring寮鍙戣呬腑騫挎硾瀛樺湪錛屾湰鏂囨繁鍏ヨ瑙d簡Spring浜嬪姟浼犳挱琛屼負瀵逛笟鍔℃柟娉曞祵濂楄皟鐢ㄧ殑鐪熷疄褰卞搷錛屽笇鏈涜兘甯姪璇昏呭寲瑙e浜嬪姟浼犳挱琛屼負鐨勫洶鎯戙?/span>