锘??xml version="1.0" encoding="utf-8" standalone="yes"?>蜜桃视频一区二区,欧美不卡激情三级在线观看,欧美色就是色http://www.aygfsteel.com/jxhkwhy/category/43640.htmlzh-cnMon, 18 Jan 2010 11:56:50 GMTMon, 18 Jan 2010 11:56:50 GMT60Spring 妗嗘灦綆€浠?杞?http://www.aygfsteel.com/jxhkwhy/articles/309974.html綰擱鏈?/dc:creator>綰擱鏈?/author>Mon, 18 Jan 2010 09:06:00 GMThttp://www.aygfsteel.com/jxhkwhy/articles/309974.htmlhttp://www.aygfsteel.com/jxhkwhy/comments/309974.htmlhttp://www.aygfsteel.com/jxhkwhy/articles/309974.html#Feedback0http://www.aygfsteel.com/jxhkwhy/comments/commentRss/309974.htmlhttp://www.aygfsteel.com/jxhkwhy/services/trackbacks/309974.html

Spring AOP 鍜?IOC 瀹瑰櫒鍏ラ棬

developerWorks
鏂囨。閫夐」

鏍蜂緥浠g爜


綰у埆錛?鍒濈駭

Naveen Balani (naveenbalani@rediffmail.com), 鎶€鏈灦鏋勫笀, Webify Solutions

2005 騫?8 鏈?18 鏃?/p>

鍦ㄨ繖鐢變笁閮ㄥ垎緇勬垚鐨勪粙緇?Spring 妗嗘灦鐨勭郴鍒楁枃绔犵殑絎竴鏈熶腑錛屽皢寮€濮嬪涔?fàn)濡備綍鐢?Spring 鎶€鏈瀯寤鴻交閲忕駭鐨勩€佸己澹殑 J2EE 搴旂敤紼嬪簭銆俤eveloperWorks 鐨勫畾鏈熸姇紼夸漢 Naveen Balani 閫氳繃浠嬬粛 Spring 妗嗘灦寮€濮嬩簡浠栫敱涓夐儴鍒嗙粍鎴愮殑 Spring 緋誨垪錛屽叾涓繕灝嗕粙緇?Spring 闈㈠悜鏂歸潰鐨勭紪紼嬶紙AOP錛夊拰鎺у埗鍙嶈漿錛圛OC錛夊鍣ㄣ€?/blockquote>

Spring 鏄竴涓紑婧愭鏋訛紝鏄負(fù)浜嗚В鍐充紒涓氬簲鐢ㄧ▼搴忓紑鍙戝鏉傛€ц€屽垱寤虹殑銆傛鏋剁殑涓昏浼樺娍涔嬩竴灝辨槸鍏跺垎灞傛灦鏋勶紝鍒嗗眰鏋舵瀯鍏佽鎮(zhèn)ㄩ€夋嫨浣跨敤鍝竴涓粍浠訛紝鍚屾椂涓?J2EE 搴旂敤紼嬪簭寮€鍙戞彁渚涢泦鎴愮殑妗嗘灦銆?/p>

鍦ㄨ繖綃囩敱涓夐儴鍒嗙粍鎴愮殑 Spring 緋誨垪 鐨勭 1 閮ㄥ垎涓紝鎴戝皢浠嬬粛 Spring 妗嗘灦銆傛垜鍏堜粠妗嗘灦搴曞眰妯″瀷鐨勮搴︽弿榪拌妗嗘灦鐨勫姛鑳斤紝鐒跺悗灝嗚璁轟袱涓渶鏈夎叮鐨勬ā鍧楋細(xì)Spring 闈㈠悜鏂歸潰緙栫▼錛圓OP錛夊拰鎺у埗鍙嶈漿 錛圛OC錛?瀹瑰櫒銆傛帴鐫€灝嗕嬌鐢ㄥ嚑涓ず渚嬫紨紺?IOC 瀹瑰櫒鍦ㄥ吀鍨嬪簲鐢ㄧ▼搴忕敤渚嬪満鏅腑鐨勫簲鐢ㄦ儏鍐點€傝繖浜涚ず渚嬭繕灝嗘垚涓烘湰緋誨垪鍚庨潰閮ㄥ垎榪涜鐨勫睍寮€寮忚璁虹殑鍩虹錛屽湪鏈枃鐨勫悗闈㈤儴鍒嗭紝灝嗕粙緇?Spring 妗嗘灦閫氳繃 Spring AOP 瀹炵幇 AOP 鏋勯€犵殑鏂瑰紡銆?/p>

璇峰弬闃?涓嬭澆錛屼笅杞?Spring 妗嗘灦鍜?Apache Ant錛岃繍琛屾湰緋誨垪鐨勭ず渚嬪簲鐢ㄧ▼搴忛渶瑕佸畠浠€?/p>

Spring 妗嗘灦

Spring 妗嗘灦鏄竴涓垎灞傛灦鏋勶紝鐢?7 涓畾涔夎壇濂界殑妯″潡緇勬垚銆係pring 妯″潡鏋勫緩鍦ㄦ牳蹇冨鍣ㄤ箣涓婏紝鏍稿績瀹瑰櫒瀹氫箟浜嗗垱寤恒€侀厤緗拰綆$悊 bean 鐨勬柟寮忥紝濡傚浘 1 鎵€紺恒€?/p>
鍥?1. Spring 妗嗘灦鐨?7 涓ā鍧?/strong>
Spring 妗嗘灦鍥劇ず

緇勬垚 Spring 妗嗘灦鐨勬瘡涓ā鍧楋紙鎴栫粍浠訛級閮藉彲浠ュ崟鐙瓨鍦紝鎴栬€呬笌鍏朵粬涓€涓垨澶氫釜妯″潡鑱斿悎瀹炵幇銆傛瘡涓ā鍧楃殑鍔熻兘濡備笅錛?

  • 鏍稿績瀹瑰櫒錛氭牳蹇冨鍣ㄦ彁渚?Spring 妗嗘灦鐨勫熀鏈姛鑳姐€傛牳蹇冨鍣ㄧ殑涓昏緇勪歡鏄?BeanFactory錛屽畠鏄伐鍘傛ā寮忕殑瀹炵幇銆?code>BeanFactory 浣跨敤鎺у埗鍙嶈漿 錛圛OC錛?妯″紡灝嗗簲鐢ㄧ▼搴忕殑閰嶇疆鍜屼緷璧栨€ц鑼冧笌瀹為檯鐨勫簲鐢ㄧ▼搴忎唬鐮佸垎寮€銆?/li>
  • Spring 涓婁笅鏂?/strong>錛歋pring 涓婁笅鏂囨槸涓€涓厤緗枃浠訛紝鍚?Spring 妗嗘灦鎻愪緵涓婁笅鏂囦俊鎭€係pring 涓婁笅鏂囧寘鎷紒涓氭湇鍔★紝渚嬪 JNDI銆丒JB銆佺數(shù)瀛愰偖浠躲€佸浗闄呭寲銆佹牎楠屽拰璋冨害鍔熻兘銆?/li>
  • Spring AOP錛氶€氳繃閰嶇疆綆$悊鐗規(guī)€э紝Spring AOP 妯″潡鐩存帴灝嗛潰鍚戞柟闈㈢殑緙栫▼鍔熻兘闆嗘垚鍒頒簡 Spring 妗嗘灦涓€傛墍浠ワ紝鍙互寰堝鏄撳湴浣?Spring 妗嗘灦綆$悊鐨勪換浣曞璞℃敮鎸?AOP銆係pring AOP 妯″潡涓哄熀浜?Spring 鐨勫簲鐢ㄧ▼搴忎腑鐨勫璞℃彁渚涗簡浜嬪姟綆$悊鏈嶅姟銆傞€氳繃浣跨敤 Spring AOP錛屼笉鐢ㄤ緷璧?EJB 緇勪歡錛屽氨鍙互灝嗗0鏄庢€т簨鍔$鐞嗛泦鎴愬埌搴旂敤紼嬪簭涓€?/li>
  • Spring DAO錛欽DBC DAO 鎶借薄灞傛彁渚涗簡鏈夋剰涔夌殑寮傚父灞傛緇撴瀯錛屽彲鐢ㄨ緇撴瀯鏉ョ鐞嗗紓甯稿鐞嗗拰涓嶅悓鏁版嵁搴撲緵搴斿晢鎶涘嚭鐨勯敊璇秷鎭€傚紓甯稿眰嬈$粨鏋勭畝鍖栦簡閿欒澶勭悊錛屽茍涓旀瀬澶у湴闄嶄綆浜嗛渶瑕佺紪鍐欑殑寮傚父浠g爜鏁伴噺錛堜緥濡傛墦寮€鍜屽叧闂繛鎺ワ級銆係pring DAO 鐨勯潰鍚?JDBC 鐨勫紓甯擱伒浠庨€氱敤鐨?DAO 寮傚父灞傛緇撴瀯銆?/li>
  • Spring ORM錛歋pring 妗嗘灦鎻掑叆浜嗚嫢騫蹭釜 ORM 妗嗘灦錛屼粠鑰屾彁渚涗簡 ORM 鐨勫璞″叧緋誨伐鍏鳳紝鍏朵腑鍖呮嫭 JDO銆丠ibernate 鍜?iBatis SQL Map銆傛墍鏈夎繖浜涢兘閬典粠 Spring 鐨勯€氱敤浜嬪姟鍜?DAO 寮傚父灞傛緇撴瀯銆?/li>
  • Spring Web 妯″潡錛歐eb 涓婁笅鏂囨ā鍧楀緩绔嬪湪搴旂敤紼嬪簭涓婁笅鏂囨ā鍧椾箣涓婏紝涓哄熀浜?Web 鐨勫簲鐢ㄧ▼搴忔彁渚涗簡涓婁笅鏂囥€傛墍浠ワ紝Spring 妗嗘灦鏀寔涓?Jakarta Struts 鐨勯泦鎴愩€俉eb 妯″潡榪樼畝鍖栦簡澶勭悊澶氶儴鍒嗚姹備互鍙婂皢璇鋒眰鍙傛暟緇戝畾鍒板煙瀵硅薄鐨勫伐浣溿€?/li>
  • Spring MVC 妗嗘灦錛歁VC 妗嗘灦鏄竴涓叏鍔熻兘鐨勬瀯寤?Web 搴旂敤紼嬪簭鐨?MVC 瀹炵幇銆傞€氳繃絳栫暐鎺ュ彛錛孧VC 妗嗘灦鍙樻垚涓洪珮搴﹀彲閰嶇疆鐨勶紝MVC 瀹圭撼浜嗗ぇ閲忚鍥炬妧鏈紝鍏朵腑鍖呮嫭 JSP銆乂elocity銆乀iles銆乮Text 鍜?POI銆?/li>

 

Spring 妗嗘灦鐨勫姛鑳藉彲浠ョ敤鍦ㄤ換浣?J2EE 鏈嶅姟鍣ㄤ腑錛屽ぇ澶氭暟鍔熻兘涔熼€傜敤浜庝笉鍙楃鐞嗙殑鐜銆係pring 鐨勬牳蹇冭鐐規(guī)槸錛氭敮鎸佷笉緇戝畾鍒扮壒瀹?J2EE 鏈嶅姟鐨勫彲閲嶇敤涓氬姟鍜屾暟鎹闂璞°€傛鏃犵枒闂紝榪欐牱鐨勫璞″彲浠ュ湪涓嶅悓 J2EE 鐜 錛圵eb 鎴?EJB錛夈€佺嫭绔嬪簲鐢ㄧ▼搴忋€佹祴璇曠幆澧冧箣闂撮噸鐢ㄣ€?





鍥為〉棣?/strong>


IOC 鍜?AOP

鎺у埗鍙嶈漿妯″紡錛堜篃縐頒綔渚濊禆鎬т粙鍏ワ級鐨勫熀鏈蹇墊槸錛氫笉鍒涘緩瀵硅薄錛屼絾鏄弿榪板垱寤哄畠浠殑鏂瑰紡銆傚湪浠g爜涓笉鐩存帴涓庡璞″拰鏈嶅姟榪炴帴錛屼絾鍦ㄩ厤緗枃浠朵腑鎻忚堪鍝竴涓粍浠墮渶瑕佸摢涓€欏規(guī)湇鍔°€傚鍣?錛堝湪 Spring 妗嗘灦涓槸 IOC 瀹瑰櫒錛?璐熻矗灝嗚繖浜涜仈緋誨湪涓€璧楓€?/p>

鍦ㄥ吀鍨嬬殑 IOC 鍦烘櫙涓紝瀹瑰櫒鍒涘緩浜嗘墍鏈夊璞★紝騫惰緗繀瑕佺殑灞炴€у皢瀹冧滑榪炴帴鍦ㄤ竴璧鳳紝鍐沖畾浠€涔堟椂闂磋皟鐢ㄦ柟娉曘€備笅琛ㄥ垪鍑轟簡 IOC 鐨勪竴涓疄鐜版ā寮忋€?/p>
綾誨瀷 1 鏈嶅姟闇€瑕佸疄鐜頒笓闂ㄧ殑鎺ュ彛錛岄€氳繃鎺ュ彛錛岀敱瀵硅薄鎻愪緵榪欎簺鏈嶅姟錛屽彲浠ヤ粠瀵硅薄鏌ヨ渚濊禆鎬э紙渚嬪錛岄渶瑕佺殑闄勫姞鏈嶅姟錛?/td>
綾誨瀷 2 閫氳繃 JavaBean 鐨勫睘鎬э紙渚嬪 setter 鏂規(guī)硶錛夊垎閰嶄緷璧栨€?/td>
綾誨瀷 3 渚濊禆鎬т互鏋勯€犲嚱鏁扮殑褰㈠紡鎻愪緵錛屼笉浠?JavaBean 灞炴€х殑褰㈠紡鍏紑

Spring 妗嗘灦鐨?IOC 瀹瑰櫒閲囩敤綾誨瀷 2 鍜岀被鍨? 瀹炵幇銆?/p>

闈㈠悜鏂歸潰鐨勭紪紼?/span>

闈㈠悜鏂歸潰鐨勭紪紼?/em>錛屽嵆 AOP錛屾槸涓€縐嶇紪紼嬫妧鏈紝瀹冨厑璁哥▼搴忓憳瀵規(guī)í鍒囧叧娉ㄧ偣鎴栨í鍒囧吀鍨嬬殑鑱岃矗鍒嗙晫綰跨殑琛屼負(fù)錛堜緥濡傛棩蹇楀拰浜嬪姟綆$悊錛夎繘琛屾ā鍧楀寲銆侫OP 鐨勬牳蹇冩瀯閫犳槸鏂歸潰錛屽畠?yōu)畣閭d簺濯勫搷澶氫釜绫荤殑琛屼负灏佽鍒板彲閲嶇敤鐨勬ā鍧椾腑銆?/p>

AOP 鍜?IOC 鏄ˉ鍏呮€х殑鎶€鏈紝瀹冧滑閮借繍鐢ㄦā鍧楀寲鏂瑰紡瑙e喅浼佷笟搴旂敤紼嬪簭寮€鍙戜腑鐨勫鏉傞棶棰樸€傚湪鍏稿瀷鐨勯潰鍚戝璞″紑鍙戞柟寮忎腑錛屽彲鑳借灝嗘棩蹇楄褰曡鍙ユ斁鍦ㄦ墍鏈夋柟娉曞拰 Java 綾諱腑鎵嶈兘瀹炵幇鏃ュ織鍔熻兘銆傚湪 AOP 鏂瑰紡涓紝鍙互鍙嶈繃鏉ュ皢鏃ュ織鏈嶅姟妯″潡鍖?/em>錛屽茍浠ュ0鏄庣殑鏂瑰紡灝嗗畠浠簲鐢ㄥ埌闇€瑕佹棩蹇楃殑緇勪歡涓娿€傚綋鐒訛紝浼樺娍灝辨槸 Java 綾諱笉闇€瑕佺煡閬撴棩蹇楁湇鍔$殑瀛樺湪錛屼篃涓嶉渶瑕佽€冭檻鐩稿叧鐨勪唬鐮併€傛墍浠ワ紝鐢?Spring AOP 緙栧啓鐨勫簲鐢ㄧ▼搴忎唬鐮佹槸鏉炬暎鑰﹀悎鐨勩€?/p>

AOP 鐨勫姛鑳藉畬鍏ㄩ泦鎴愬埌浜?Spring 浜嬪姟綆$悊銆佹棩蹇楀拰鍏朵粬鍚勭鐗規(guī)€х殑涓婁笅鏂囦腑銆?/p>



鍥為〉棣?/strong>


IOC 瀹瑰櫒

Spring 璁捐鐨勬牳蹇冩槸 org.springframework.beans 鍖咃紝瀹冪殑璁捐鐩爣鏄笌 JavaBean 緇勪歡涓€璧蜂嬌鐢ㄣ€傝繖涓寘閫氬父涓嶆槸鐢辯敤鎴風(fēng)洿鎺ヤ嬌鐢紝鑰屾槸鐢辨湇鍔″櫒灝嗗叾鐢ㄤ綔鍏朵粬澶氭暟鍔熻兘鐨勫簳灞備腑浠嬨€備笅涓€涓渶楂樼駭鎶借薄鏄?BeanFactory 鎺ュ彛錛屽畠鏄伐鍘傝璁℃ā寮忕殑瀹炵幇錛屽厑璁?dāng)R€氳繃鍚嶇О鍒涘緩鍜屾绱㈠璞°€?code>BeanFactory 涔熷彲浠ョ鐞嗗璞′箣闂寸殑鍏崇郴銆?/p>

BeanFactory 鏀寔涓や釜瀵硅薄妯″瀷銆?/p>

  • 鍗曟€?/strong> 妯″瀷鎻愪緵浜嗗叿鏈夌壒瀹氬悕縐扮殑瀵硅薄鐨勫叡浜疄渚嬶紝鍙互鍦ㄦ煡璇㈡椂瀵瑰叾榪涜媯€绱€€係ingleton 鏄粯璁ょ殑涔熸槸鏈€甯哥敤鐨勫璞℃ā鍨嬨€傚浜庢棤鐘舵€佹湇鍔″璞″緢鐞嗘兂銆?/li>
  • 鍘熷瀷 妯″瀷紜繚姣忔媯€绱㈤兘浼?xì)鍒涘缓鍗曠嫭鐨勫璞°€傚湪姣忎釜鐢ㄦ埛閮介渶瑕佽嚜宸辯殑瀵硅薄鏃訛紝鍘熷瀷妯″瀷鏈€閫傚悎銆?/li>

bean 宸ュ巶鐨勬蹇墊槸 Spring 浣滀負(fù) IOC 瀹瑰櫒鐨勫熀紜€銆侷OC 灝嗗鐞嗕簨鎯呯殑璐d換浠庡簲鐢ㄧ▼搴忎唬鐮佽漿縐誨埌妗嗘灦銆傛濡傛垜灝嗗湪涓嬩竴涓ず渚嬩腑婕旂ず鐨勯偅鏍鳳紝Spring 妗嗘灦浣跨敤 JavaBean 灞炴€у拰閰嶇疆鏁版嵁鏉ユ寚鍑哄繀欏昏緗殑渚濊禆鍏崇郴銆?/p>

BeanFactory 鎺ュ彛

鍥犱負(fù) org.springframework.beans.factory.BeanFactory 鏄竴涓畝鍗曟帴鍙o紝鎵€浠ュ彲浠ラ拡瀵瑰悇縐嶅簳灞傚瓨鍌ㄦ柟娉曞疄鐜般€傛渶甯哥敤鐨?BeanFactory 瀹氫箟鏄?XmlBeanFactory錛屽畠鏍規(guī)嵁 XML 鏂囦歡涓殑瀹氫箟瑁呭叆 bean錛屽娓呭崟 1 鎵€紺恒€?/p>
娓呭崟 1. XmlBeanFactory
BeanFactory factory = new XMLBeanFactory(new FileInputSteam("mybean.xml"));
                        

鍦?XML 鏂囦歡涓畾涔夌殑 Bean 鏄娑堟瀬鍔犺澆鐨勶紝榪欐剰鍛沖湪闇€瑕?bean 涔嬪墠錛宐ean 鏈韓涓嶄細(xì)琚垵濮嬪寲銆傝浠?BeanFactory 媯€绱?bean錛屽彧闇€璋冪敤 getBean() 鏂規(guī)硶錛屼紶鍏ュ皢瑕佹绱㈢殑 bean 鐨勫悕縐板嵆鍙紝濡傛竻鍗?2 鎵€紺恒€?/p>
娓呭崟 2. getBean()
MyBean mybean = (MyBean) factory.getBean("mybean");
                        

姣忎釜 bean 鐨勫畾涔夐兘鍙互鏄?POJO 錛堢敤綾誨悕鍜?JavaBean 鍒濆鍖栧睘鎬у畾涔夛級 鎴?FactoryBean銆?code>FactoryBean 鎺ュ彛涓轟嬌鐢?Spring 妗嗘灦鏋勫緩鐨勫簲鐢ㄧ▼搴忔坊鍔犱簡涓€涓棿鎺ョ殑綰у埆銆?/p>



鍥為〉棣?/strong>


IOC 紺轟緥

鐞嗚В鎺у埗鍙嶈漿鏈€綆€鍗曠殑鏂瑰紡灝辨槸鐪嬪畠鐨勫疄闄呭簲鐢ㄣ€傚湪瀵圭敱涓夐儴鍒嗙粍鎴愮殑 Spring 緋誨垪 鐨勭 1 閮ㄥ垎榪涜鎬葷粨鏃訛紝鎴戜嬌鐢ㄤ簡涓€涓ず渚嬶紝婕旂ず浜嗗浣曢€氳繃 Spring IOC 瀹瑰櫒娉ㄥ叆搴旂敤紼嬪簭鐨勪緷璧栧叧緋伙紙鑰屼笉鏄皢瀹冧滑鏋勫緩榪涙潵錛夈€?/p>

鎴戠敤寮€鍚湪綰夸俊鐢ㄥ笎鎴風(fēng)殑鐢ㄤ緥浣滀負(fù)璧風(fēng)偣銆傚浜庤瀹炵幇錛屽紑鍚俊鐢ㄥ笎鎴瘋姹傜敤鎴蜂笌浠ヤ笅鏈嶅姟榪涜浜や簰錛?

  • 淇$敤綰у埆璇勫畾鏈嶅姟錛屾煡璇㈢敤鎴風(fēng)殑淇$敤鍘嗗彶淇℃伅銆?/li>
  • 榪滅▼淇℃伅閾炬帴鏈嶅姟錛屾彃鍏ュ鎴蜂俊鎭紝灝嗗鎴蜂俊鎭笌淇$敤鍗″拰閾惰淇℃伅榪炴帴璧鋒潵錛屼互榪涜鑷姩鍊熻錛堝鏋滈渶瑕佺殑璇濓級銆?/li>
  • 鐢?shù)瀛愰偖錃g鏈嶅姟錛屽悜鐢ㄦ埛鍙戦€佹湁鍏充俊鐢ㄥ崱鐘舵€佺殑鐢?shù)瀛愰偖錃g銆?/li>

 





鍥為〉棣?/strong>


涓変釜鎺ュ彛

瀵逛簬榪欎釜紺轟緥錛屾垜鍋囪鏈嶅姟宸茬粡瀛樺湪錛岀悊鎯崇殑鎯呭喌鏄敤鏉炬暎鑰﹀悎鐨勬柟寮忔妸瀹冧滑闆嗘垚鍦ㄤ竴璧楓€備互涓嬫竻鍗曟樉紺轟簡涓変釜鏈嶅姟鐨勫簲鐢ㄧ▼搴忔帴鍙c€?/p>
娓呭崟 3. CreditRatingInterface
public interface CreditRatingInterface {
                        public boolean getUserCreditHistoryInformation(ICustomer iCustomer);
                        }
                        

娓呭崟 3 鎵€紺虹殑淇$敤綰у埆璇勫畾鎺ュ彛鎻愪緵浜嗕俊鐢ㄥ巻鍙蹭俊鎭€傚畠闇€瑕佷竴涓寘鍚鎴蜂俊鎭殑 Customer 瀵硅薄銆傝鎺ュ彛鐨勫疄鐜版槸鐢?CreditRating 綾繪彁渚涚殑銆?/p>
娓呭崟 4. CreditLinkingInterface
public interface CreditLinkingInterface {
                        public String getUrl();
                        public void setUrl(String url);
                        public void linkCreditBankAccount() throws Exception ;
                        }
                        

淇$敤閾炬帴鎺ュ彛灝嗕俊鐢ㄥ巻鍙蹭俊鎭笌閾惰淇℃伅錛堝鏋滈渶瑕佺殑璇濓級榪炴帴鍦ㄤ竴璧鳳紝騫舵彃鍏ョ敤鎴風(fēng)殑淇$敤鍗′俊鎭€備俊鐢ㄩ摼鎺ユ帴鍙f槸涓€涓繙紼嬫湇鍔★紝瀹冪殑鏌ヨ鏄€氳繃 getUrl() 鏂規(guī)硶榪涜鐨勩€俇RL 鐢?Spring 妗嗘灦鐨?bean 閰嶇疆鏈哄埗璁劇疆錛屾垜紼嶅悗浼?xì)璁ㄨ瀹冦€傝鎺ュ彛鐨勫疄鐜版槸鐢?CreditLinking 綾繪彁渚涚殑銆?/p>
娓呭崟 5. EmailInterface
public interface EmailInterface {
                        public void sendEmail(ICustomer iCustomer);
                        public String getFromEmail();
                        public void setFromEmail(String fromEmail) ;
                        public String getPassword();
                        public void setPassword(String password) ;
                        public String getSmtpHost() ;
                        public void setSmtpHost(String smtpHost);
                        public String getUserId() ;
                        public void setUserId(String userId);
                        }
                        

EmailInterface 璐熻矗鍚戝鎴峰彂閫佸叧浜庡鎴蜂俊鐢ㄥ崱鐘舵€佺殑鐢?shù)瀛愰偖錃g銆傞偖浠墮厤緗弬鏁幫紙渚嬪 SMPT 涓繪満銆佺敤鎴峰悕銆佸彛浠わ級鐢卞墠闈㈡彁鍒扮殑 bean 閰嶇疆鏈哄埗璁劇疆銆?code>Email 綾繪彁渚涗簡璇ユ帴鍙g殑瀹炵幇銆?/p>



鍥為〉棣?/strong>


Spring 浣垮叾淇濇寔鏉炬暎

榪欎簺鎺ュ彛灝變綅涔嬪悗錛屾帴涓嬫潵瑕佽€冭檻鐨勫氨鏄浣曠敤鏉炬暎鑰﹀悎鏂瑰紡灝嗗畠浠泦鎴愬湪涓€璧楓€傚湪 娓呭崟 6 涓彲浠ョ湅鍒頒俊鐢ㄥ崱甯愭埛鐢ㄤ緥鐨勫疄鐜般€?/p>

娉ㄦ剰錛屾墍鏈夌殑 setter 鏂規(guī)硶閮芥槸鐢?Spring 鐨勯厤緗?bean 瀹炵幇鐨勩€傛墍鏈夌殑渚濊禆鍏崇郴 錛堜篃灝辨槸涓変釜鎺ュ彛錛夐兘鍙互鐢?Spring 妗嗘灦鐢ㄨ繖浜?bean 娉ㄥ叆銆?code>createCreditCardAccount() 鏂規(guī)硶浼?xì)鐢ㄦ湇鍔″幚L墽琛屽叾浣欏疄鐜般€傚湪 娓呭崟 7 涓彲浠ョ湅鍒?Spring 鐨勯厤緗枃浠躲€傛垜鐢ㄧ澶寸獊鍑轟簡榪欎簺瀹氫箟銆?





鍥為〉棣?/strong>


榪愯搴旂敤紼嬪簭

瑕佽繍琛岀ず渚嬪簲鐢ㄧ▼搴忥紝棣栧厛蹇呴』 涓嬭澆 Spring 妗嗘灦 鍙婂叾鎵€鏈変緷璧栨枃浠躲€傛帴涓嬫潵錛屽皢妗嗘灦閲婃斁鍒幫紙姣斿璇達(dá)級紓佺洏 c:\錛岃繖浼?xì)鍒涘?C:\spring-framework-1.2-rc2 錛堥€傜敤浜庡綋鍓嶅彂琛岀増鏈級 榪欐牱鐨勬枃浠跺す銆傚湪緇х畫鍚庨潰鐨勬搷浣滀箣鍓嶏紝榪樺繀欏諱笅杞藉拰閲婃斁 Apache Ant銆?/p>

鎺ヤ笅鏉ワ紝灝嗘簮浠g爜閲婃斁鍒版枃浠跺す錛屼緥濡?c:\ 鐩橈紝鐒跺悗鍒涘緩 SpringProject銆傚皢 Spring 搴擄紙鍗?C:\spring-framework-1.2-rc2\dist 涓嬬殑 spring.jar 鍜?C:\spring-framework-1.2-rc2\lib\jakarta-commons 涓嬬殑 commons-logging.jar錛夊鍒跺埌 SpringProject\lib 鏂囦歡澶逛腑銆傚畬鎴愯繖浜涘伐浣滀箣鍚庯紝灝辨湁浜嗗繀闇€鐨勬瀯寤轟緷璧栧叧緋婚泦銆?/p>

鎵撳紑鍛戒護(hù)鎻愮ず絎︼紝灝嗗綋鍓嶇洰褰曞垏鎹㈠埌 SpringProject錛屽湪鍛戒護(hù)鎻愮ず絎︿腑杈撳叆浠ヤ笅鍛戒護(hù)錛?code>build銆?

榪欎細(xì)鏋勫緩騫惰繍琛?CreateCreditAccountClient 綾伙紝綾葷殑榪愯灝嗗垱寤?Customer 綾誨璞″茍濉厖瀹冿紝榪樹細(xì)璋冪敤 CreateCreditCardAccount 綾誨垱寤哄茍閾炬帴淇$敤鍗″笎鎴楓€?code>CreateCreditAccountClient 榪樹細(xì)閫氳繃 ClassPathXmlApplicationContext 瑁呭叆 Spring 閰嶇疆鏂囦歡銆傝鍏?bean 涔嬪悗錛屽氨鍙互閫氳繃 getBean() 鏂規(guī)硶璁塊棶瀹冧滑浜嗭紝濡傛竻鍗?8 鎵€紺恒€?/p>
娓呭崟 8. 瑁呭叆 Spring 閰嶇疆鏂囦歡
ClassPathXmlApplicationContext appContext =
                        new ClassPathXmlApplicationContext(new String[] {
                        "springexample-creditaccount.xml"
                        });
                        CreateCreditCardAccountInterface creditCardAccount =
                        (CreateCreditCardAccountInterface)
                        appContext.getBean("createCreditCard");
                        





鍥為〉棣?/strong>


緇撴潫璇?/span>

鍦ㄨ繖綃囩敱涓夐儴鍒嗙粍鎴愮殑 Spring 緋誨垪 鐨勭涓€綃囨枃绔犱腑錛屾垜浠嬬粛浜?Spring 妗嗘灦鐨勫熀紜€銆傛垜浠庤璁虹粍鎴?Spring 鍒嗗眰鏋舵瀯鐨?7 涓ā鍧楀紑濮嬶紝鐒跺悗娣卞叆浠嬬粛浜嗗叾涓袱涓ā鍧楋細(xì)Spring AOP 鍜?IOC 瀹瑰櫒銆?/p>

鐢變簬瀛︿範(fàn)鐨勬渶浣蟲柟娉曟槸瀹炶返錛屾墍浠ユ垜鐢ㄤ竴涓伐浣滅ず渚嬩粙緇嶄簡 IOC 妯″紡 錛堝儚 Spring 鐨?IOC 瀹瑰櫒瀹炵幇鐨勯偅鏍鳳級濡備綍鐢ㄦ澗鏁h€﹀悎鐨勬柟寮忓皢鍒嗘暎鐨勭郴緇熼泦鎴愬湪涓€璧楓€傚湪榪欎釜紺轟緥涓彲浠ョ湅鍒幫紝灝嗕緷璧栧叧緋繪垨鏈嶅姟娉ㄥ叆宸ヤ綔涓殑淇$敤鍗″笎鎴峰簲鐢ㄧ▼搴忥紝瑕佹瘮浠庡ご寮€濮嬫瀯寤哄畠浠鏄撳緱澶氥€?/p>

璇風(fēng)戶緇叧娉ㄨ繖涓€緋誨垪鐨勪笅涓€綃囨枃绔狅紝鎴戝皢鍦ㄨ繖閲屽涔?fàn)鐨勭煡璇嗗熀纭€涓婏紝浠嬬粛 Spring AOP 妯″潡濡備綍鍦ㄤ紒涓氬簲鐢ㄧ▼搴忎腑鎻愪緵鎸佷箙鏀寔錛屽茍璁╂?zhèn)ㄥ紑濮嬩簡瑙?Spring MVC 妯″潡鍜岀浉鍏蟲彃浠躲€?/p>



]]>
Spring鐨凥ibernate浜嬪姟綆$悊鏈哄埗http://www.aygfsteel.com/jxhkwhy/articles/309973.html綰擱鏈?/dc:creator>綰擱鏈?/author>Mon, 18 Jan 2010 09:04:00 GMThttp://www.aygfsteel.com/jxhkwhy/articles/309973.htmlhttp://www.aygfsteel.com/jxhkwhy/comments/309973.htmlhttp://www.aygfsteel.com/jxhkwhy/articles/309973.html#Feedback0http://www.aygfsteel.com/jxhkwhy/comments/commentRss/309973.htmlhttp://www.aygfsteel.com/jxhkwhy/services/trackbacks/309973.html杞嚜錛歨ttp://developer.51cto.com/art/200909/154124.htm

    Spring澹版槑寮忎簨鍔¤鎴戜滑浠庡鏉傜殑Hibernate浜嬪姟澶勭悊涓緱鍒拌В鑴便€備嬌寰楁垜浠啀涔熸棤闇€瑕佸幓澶勭悊鑾峰緱榪炴帴銆佸叧闂繛鎺ャ€丠ibernate浜嬪姟鎻愪氦鍜屽洖婊氱瓑榪欎簺鎿嶄綔銆?

    鏈枃涓昏璁蹭簡Spring 澹版槑寮忎簨鍔¤鎴戜滑浠庡鏉傜殑Hibernate浜嬪姟澶勭悊涓緱鍒拌В鑴便€?/p>

    浣垮緱鎴戜滑鍐嶄篃鏃犻渶瑕佸幓澶勭悊鑾峰緱榪炴帴銆佸叧闂繛鎺ャ€丠ibernate浜嬪姟鎻愪氦鍜屽洖婊氱瓑榪欎簺鎿嶄綔銆傚啀涔熸棤< font color="#ff0000">闇€瑕佹垜浠湪涓庝簨鍔$浉鍏崇殑鏂規(guī)硶涓鐞嗗ぇ閲忕殑try…catch…finally浠g爜< /font>銆?/p>

    鎴戜滑鍦ㄤ嬌鐢⊿pring 澹版槑寮忎簨鍔℃椂錛屾湁涓€涓潪甯擱噸瑕佺殑姒傚康灝辨槸浜嬪姟灞炴€с€備簨鍔″睘鎬ч€氬父鐢變簨鍔$殑浼犳挱琛屼負(fù)錛屼簨鍔$殑闅旂綰у埆錛屼簨鍔$殑瓚呮椂鍊煎拰浜嬪姟鍙鏍囧織緇勬垚銆傛垜浠湪榪涜浜嬪姟鍒掑垎鏃訛紝闇€瑕佽繘琛孒ibernate浜嬪姟瀹氫箟錛屼篃灝辨槸閰嶇疆Hibernate浜嬪姟鐨勫睘鎬с€?/p>

    Spring Hibernate鍦?gt;TransactionDefinition 鎺ュ彛涓畾涔夎繖浜涘睘鎬?浠ヤ緵PlatfromTransactionManager浣跨敤, PlatfromTransactionManager鏄痵pring Hibernate浜嬪姟綆$悊鐨勬牳蹇冩帴鍙c€?
    浠g爜

            
    1. TransactionDefinition publicinterfaceTransactionDefinition {   
    2. intgetPropagationBehavior();   
    3. intgetIsolationLevel();   
    4. intgetTimeout();   
    5. booleanisReadOnly();   
    6. }  

    getTimeout()鏂規(guī)硶錛屽畠榪斿洖浜嬪姟蹇呴』鍦ㄥ灝戠鍐呭畬鎴愩€?
    isReadOnly(),浜嬪姟鏄惁鍙錛屼簨鍔$鐞嗗櫒鑳藉鏍規(guī)嵁榪欎釜榪斿洖鍊艱繘琛屼紭鍖栵紝紜繚浜嬪姟鏄彧璇葷殑銆?
    getIsolationLevel()鏂規(guī)硶榪斿洖浜嬪姟鐨勯殧紱葷駭鍒紝浜嬪姟綆$悊鍣ㄦ牴鎹畠鏉ユ帶鍒跺彟澶栦竴涓簨鍔″彲浠ョ湅鍒版湰浜嬪姟鍐呯殑鍝簺鏁版嵁銆?

    鍦═ransactionDefinition鎺ュ彛涓畾涔変簡浜斾釜涓嶅悓鐨勪簨鍔¢殧紱葷駭鍒?

    1) ISOLATION_DEFAULT 榪欐槸涓€涓?PlatfromTransactionManager榛樿鐨勯殧紱葷駭鍒紝浣跨敤鏁版嵁搴撻粯璁ょ殑浜嬪姟闅旂綰у埆.鍙﹀鍥涗釜涓嶫DBC鐨勯殧紱葷駭鍒浉瀵瑰簲

    2) ISOLATION_READ_UNCOMMITTED榪欐槸浜嬪姟鏈€浣庣殑闅旂綰у埆錛屽畠鍏呰鍒涓€涓簨鍔″彲浠ョ湅鍒拌繖涓簨鍔℃湭鎻愪氦鐨勬暟鎹€傝繖縐嶉殧紱葷駭鍒細(xì)浜х敓鑴忚錛屼笉鍙噸澶嶈鍜屽夠鍍忚銆?/p>

    3) ISOLATION_READ_COMMITTED 淇濊瘉涓€涓簨鍔′慨鏀圭殑鏁版嵁鎻愪氦鍚庢墠鑳借鍙﹀涓€涓簨鍔¤鍙栥€傚彟澶栦竴涓簨鍔′笉鑳借鍙栬浜嬪姟鏈彁浜ょ殑鏁版嵁銆傝繖縐嶄簨鍔¢殧紱葷駭鍒彲浠ラ伩鍏嶈剰璇誨嚭鐜幫紝浣嗘槸鍙兘浼?xì)鍑虹庮C笉鍙噸澶嶈鍜屽夠鍍忚銆?/p>

    4) ISOLATION_REPEATABLE_READ 榪欑浜嬪姟闅旂綰у埆鍙互闃叉鑴忚錛屼笉鍙噸澶嶈銆備絾鏄彲鑳藉嚭鐜板夠鍍忚銆傚畠闄や簡淇濊瘉涓€涓簨鍔′笉鑳借鍙栧彟涓€涓簨鍔℃湭鎻愪氦鐨勬暟鎹錛岃繕淇濊瘉浜嗛伩鍏嶄笅闈㈢殑鎯呭喌浜х敓(涓嶅彲閲嶅璇?

    鍦═ransactionDefinition鎺ュ彛涓畾涔変簡涓冧釜浜嬪姟浼犳挱琛屼負(fù):

    1) < span style="color: #000000;"> PROPAGATION_REQUIRED 濡傛灉瀛樺湪涓€涓簨鍔★紝鍒欐敮鎸佸綋鍓嶄簨鍔°€傚鏋滄病鏈変簨鍔″垯寮€鍚竴涓柊鐨勪簨鍔?

    2) PROPAGATION_SUPPORTS 濡傛灉瀛樺湪涓€涓簨鍔★紝鏀寔褰撳墠浜嬪姟銆傚鏋滄病鏈変簨鍔★紝鍒欓潪浜嬪姟鐨勬墽琛?

    3) PROPAGATION_MANDATORY 濡傛灉宸茬粡瀛樺湪涓€涓簨鍔★紝鏀寔褰撳墠浜嬪姟銆傚鏋滄病鏈変竴涓椿鍔ㄧ殑浜嬪姟錛屽垯鎶涘嚭寮?

    4)PROPAGATION_REQUIRES_NEW 鎬繪槸寮€鍚竴涓柊鐨勪簨鍔°€傚鏋滀竴涓簨鍔″凡緇忓瓨鍦紝鍒欏皢榪欎釜瀛樺湪鐨勪簨鍔℃寕璧?

    5) PROPAGATION_NOT_SUPPORTED鎬繪槸闈炰簨鍔″湴鎵ц錛屽茍鎸傝搗浠諱綍瀛樺湪鐨勪簨鍔?

    6) PROPAGATION_NEVER鎬繪槸闈炰簨鍔″湴鎵ц錛屽鏋滃瓨鍦ㄤ竴涓椿鍔ㄤ簨鍔★紝鍒欐姏鍑哄紓甯?

    7) PROPAGATION_NESTED濡傛灉涓€涓椿鍔ㄧ殑浜嬪姟瀛樺湪錛屽垯榪愯鍦ㄤ竴涓祵濂楃殑浜嬪姟涓? 濡傛灉娌℃湁媧誨姩浜嬪姟, 鍒欐寜 TransactionDefinition.PROPAGATION_REQUIRED 灞炴€ф墽琛?



]]>
spring浜嬪姟綆$悊http://www.aygfsteel.com/jxhkwhy/articles/309971.html綰擱鏈?/dc:creator>綰擱鏈?/author>Mon, 18 Jan 2010 08:57:00 GMThttp://www.aygfsteel.com/jxhkwhy/articles/309971.htmlhttp://www.aygfsteel.com/jxhkwhy/comments/309971.htmlhttp://www.aygfsteel.com/jxhkwhy/articles/309971.html#Feedback0http://www.aygfsteel.com/jxhkwhy/comments/commentRss/309971.htmlhttp://www.aygfsteel.com/jxhkwhy/services/trackbacks/309971.html
spring浜嬪姟綆$悊
   鍦ㄥ涔?/span>spring浜嬪姟綆$悊鏃?/span>,鎴戝繊涓嶄綇瑕侀棶,spring涓轟粈涔堣繘琛屼簨鍔$鐞?/span>,spring鎬庝箞榪涜鐨勪簨鍔$鐞?/span>?
    棣栧厛,涓轟粈涔堣榪涜浜嬪姟,璇峰弬鑰?/span>http://blog.csdn.net/sunyadongwanghbjm/archive/2007/08/20/1751518.aspx
鎺ヤ笅鏉ヨ璇?/span>spring鏄€庢牱榪涜浜嬪姟綆$悊鐨?/span>.
鈶?/span> Spring浜嬪姟絳栫暐
    Spring浜嬪姟絳栫暐,涔熷氨鏄?/span>spring浜嬪姟綆$悊鐨勫疄鐜版柟寮?/span>.瀹冩湁涓€涓粺涓€鐨勬娊璞℃槸鐢卞疄鐜頒笅闈㈣繖涓帴鍙e畬鎴愮殑.
    org.springframework.transaction.PlatformTransactionManager
    姝ゆ帴鍙g殑鍐呭濡備笅:
  
Public interface PlatformTransactionManager{
           TransactionStatue getTransaction(TransactionDefinition definition) 
throws TransactionException;
           Void commit(TransactionStatus status) 
throws TransactionException;
           Void rollback(TransactionStatus status) 
throws TransactionException;
}

   
 涓嶇鏄0鏄庡紡鐨勮繕鏄紪紼嬪紡鐨勪簨鍔$鐞嗛兘闇€瑕佹鎶借薄鏉ュ畬鎴?/span>.
瑙i噴涓€涓嬭繖涓帴鍙?/span>,榪欐牱鍙互鏇村ソ鐨勭悊瑙?/span>spring鐨勪簨鍔℃帶鍒剁殑鍘熺悊.
getTransaction()鏍規(guī)嵁綾誨瀷涓?/span>TransactionDefinition鐨勫弬鏁拌繑鍥炰竴涓?/span>TransactionStatus瀵硅薄.榪斿洖鐨?/span>TransactionStatus瀵硅薄鍙兘浠h〃涓€涓柊鐨勬垨宸茬粡瀛樺湪鐨勪簨鍔?/span>(濡傛灉鍦ㄥ綋鍓嶈皟鐢ㄥ爢鏍堟湁涓€涓鍚堟潯浠剁殑浜嬪姟).濡傚悓J2EE浜嬪姟涓婁笅鏂?/span>,涓€涓?/span>TransactionStatus涔熸槸鍜屾墽琛岀殑綰跨▼鍏寵仈鐨?/span>.
鍚屾椂,鍦ㄦ鏋朵腑榪樺瓨鍦?/span>TransactionDefinition鎺ュ彛,鍗充笂杈圭殑鍙傛暟綾誨瀷.姝ゆ帴鍙f寚瀹氫簡浜嬪姟闅旂紼嬪害銆佷簨鍔′紶鎾€佷簨鍔¤秴鏃躲€佸彧璇葷姸鎬併€?/span>
鍙﹀錛岃繕鏈?/span>TransactionStatus鎺ュ彛銆傝繖涓帴鍙d負(fù)澶勭悊浜嬪姟鎻愪緵綆€鍗曠殑鎺у埗浜嬪姟鎵ц鍜屾煡璇簨鍔$姸鎬佺殑鏂規(guī)硶銆?/span>
    
鈶?/span>    涓ょ浜嬪姟綆$悊鏂瑰紡錛氱紪紼嬪紡銆佸0鏄庡紡銆?/span>
Spring鎻愪緵涓ょ鏂瑰紡鐨勭紪紼嬪紡浜嬪姟綆$悊錛屽垎鍒槸錛氫嬌鐢?/span>TransactionTemplate鍜岀洿鎺ヤ嬌鐢?/span>PlatformTransactionManager銆?/span>
鈪? TransactionTempale閲囩敤鍜屽叾浠朣pring妯℃澘錛屽JdbcTempalte鍜孒ibernateTemplate涓€鏍風(fēng)殑鏂規(guī)硶銆傚畠浣跨敤鍥炶皟鏂規(guī)硶錛屾妸搴旂敤紼嬪簭浠庡鐞嗗彇寰楀拰閲婃斁璧勬簮涓В鑴卞嚭鏉ャ€傚鍚屽叾浠栨ā鏉匡紝TransactionTemplate鏄嚎紼嬪畨鍏ㄧ殑銆?/span>
浠g爜鐗囨錛?/span>
Object result = tt.execute(new TransactionCallback(){
   
public Object doTransaction(TransactionStatus status){
        updateOperation();
        
return resultOfUpdateOperation();
   }

}
);
浣跨敤TransactionCallback()鍙互榪斿洖涓€涓€箋€?/span>
濡傛灉浣跨敤TransactionCallbackWithoutResult鍒欐病鏈夎繑鍥炲€箋€?/span>
鈪?/span>. 涔熷彲浠ヤ嬌鐢?/span>PlatformTransactionManager鐩存帴綆$悊浜嬪姟銆傜畝鍗曞湴閫氳繃涓€涓?/span>bean寮曠敤緇欎綘鐨?/span>bean浼犻€掍竴涓綘浣跨敤鐨?/span>PlatformTransaction瀵硅薄銆傜劧鍚庯紝浣跨敤TransactionDefinition鍜?/span>TransactionStatus瀵硅薄灝卞彲浠ュ彂璧楓€佸洖婊氥€佹彁浜や簨鍔°€?/span>
濡備笅鐗囨錛?/span>
DefaultTransactionDefinition   def= new DefaultTransactionDefinition();                   //new 涓€涓簨鍔?/span>
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED); //鍒濆鍖栦簨鍔?鍙傛暟瀹氫箟浜嬪姟鐨勪紶鎾被鍨?
TransactionStatus  status = transactionManager.getTransaction(def);                    //鑾峰緱浜嬪姟鐘舵€?/span>
try{
   ……………..
   transactionManager.commit(status); 
//鎻愪氦浜嬪姟;
}
catch(…..){
   transactionManager.rollback(status); 
//鍥炴粴浜嬪姟;
}

 
Spring涔熸彁渚涘0鏄庡紡浜嬪姟綆$悊銆傝繖鏄€氳繃AOP瀹炵幇鐨勩€?/span>
澶у鏁?/span>Spring鐢ㄦ埛閫夋嫨澹版槑寮忎簨鍔$鐞嗭紝榪欐槸鏈€灝戝獎鍝嶅簲鐢ㄤ唬鐮佺殑閫夋嫨錛屽洜鑰岃繖鏄拰闈炰鏡鍏ユ€х殑杞婚噺綰у鍣ㄧ殑瑙傚康鏄竴鑷寸殑銆?/span>
鈶?/span> 閫氬父閫氳繃TransactionProxyFactoryBean璁劇疆Spring浜嬪姟浠g悊銆傞渶瑕佷竴涓洰鏍囧璞″寘瑁呭湪浜嬪姟浠g悊涓€傝繖涓洰鏍囧璞′竴鑸槸涓€涓櫘閫?/span>Javabean銆傚綋鎴戜滑瀹氫箟TransactionProxyFactoryBean鏃訛紝蹇呴』鎻愪緵涓€涓浉鍏崇殑PlatformTransactionManager鐨勫紩鐢ㄥ拰浜嬪姟灞炴€с€備簨鍔″睘鎬у惈鏈変簨鍔″畾涔夈€備緥濡?/span>:
<bean id="transactionService"class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
        
<property name="transactionManager">
            
<ref   local="transactionManager"/>
        
</property>   
        
<property  name="target">
            
<ref  local="transactionServiceControl"/>            
        
</property>
         
<property  name="transactionAttributes">
            
<props>
              
<prop key=”insert*”>PROPAGATION_REQUIRED,-MyCheckedException</prop>
<prop key=”update*”>PROPAGATION_REQUIRED</prop>
<prop key=”*”>PROPAGATION_REQUIRED,readOnly</prop>
            
</props>
        
</property>
</bean>
浜嬪姟浠g悊浼?xì)瀹炵幇鐩爣瀵硅薄鐨勬帴鍙?榪欓噷鏄睘鎬у悕鏄痶arget鐨勫紩鐢ㄣ€俰d鏄痶ransactionServiceControl銆傦紙鈼忎嬌鐢跡錛э棘錛╋饑涔熷彲浠ュ疄鐜板叿浣撶被鐨勪唬鐞嗐€傚彧瑕佽緗畃roxyTargetClass灞炴€т負(fù)true鍗沖彲銆傚鏋滅洰鏍囧璞℃病鏈夊疄鐜頒換浣曟帴鍙o紝榪欏皢鑷姩璁劇疆璇ュ睘鎬т負(fù)true銆傞€氬父錛屾垜浠笇鏈涢潰鍚戞帴鍙g紪紼嬨€傦級 鈼忎嬌鐢╬roxyInterfaces灞炴€ф潵闄愬畾浜嬪姟浠g悊鏉ヤ唬鐞嗘寚瀹氭帴鍙d篃鏄彲浠ャ€?鈼忎篃鍙互閫氳繃浠巓rg.springframework.aop.framework.ProxyConfig緇ф壙鎴栨墍鏈堿OP浠g悊宸ュ巶鍏變韓鐨勫睘鎬ф潵瀹氬埗TransactionProxyFactoryBean琛屼負(fù)銆?/span>
鐒跺悗錛岃璇村睘鎬у悕鏄?/span>transactionAttributes鎰忎箟錛?/span>
榪欓噷鐨則ransactionAttributes灞炴€ф槸瀹氫箟鍦╫rg.springframework.transaction.interceptor.NameMathTransactionAttributeSource涓殑灞炴€ф牸寮忚緗€傝繖涓寘鎷€氶厤絎︾殑鏂規(guī)硶鍚嶇О鏄犲皠鏄緢鐩磋鐨勶紝濡?#8221;insert*”銆傛敞鎰廼nsert*鐨勬槧灝勭殑鍊煎寘鎷洖婊氳鍒欍€?#8221;-MyCheckException”鎸囧畾濡傛灉鏂規(guī)硶鎶涘嚭MyCheckException鎴栧畠鐨勫瓙綾伙紝浜嬪姟浼?xì)鑷姩鍥炴粴銆傚彲浠ョ敤閫楀彿鍒嗛殧澶氫釜鍥炴粴瑙勫垯銆?#8220;錛?#8221;鍓嶇紑寮哄埗鍥炴粴錛?#8220;錛?#8221;鍓嶇紑鎸囧畾鎻愪氦錛堣繖鍏佽鍗充嬌鎶涘嚭unchecked寮傚父鏃朵篃鍙互鎻愪氦浜嬪姟錛夈€?#8220;PROPAGATION_REQUIRED”鎸囧畾浜嬪姟浼犳挱鑼冨洿銆?/span>
TransactionProxyFactoryBean鍏佽浣犻€氳繃“preInterceptors”鍜?#8220;postInterceptors”灞炴€ц緗墠鎴栧悗鐨勬嫤鎴搷浣溿€傚彲浠ヨ緗換鎰忔暟閲忕殑鍓嶅拰鍚庨€氳繃錛屽畠浠殑綾誨瀷鍙互鏄肌dvistor錛堝垏鍏ョ偣錛夛紝MethodInterceptor鎴栬褰撳墠Spring閰嶇疆鏀寔鐨勯€氱煡綾誨瀷銆備緥濡傦細(xì)錛磆rowAdvice錛孉fterReturningAdvice鎴栵饑eforeAdvice銆傝繖浜涢€氱煡蹇呴』鏀寔瀹炰緥鍏變韓妯″紡銆傚鏋滀綘闇€瑕侀珮綰錛及鐗規(guī)€ф搷浣滀簨鍔★紝閫氳繃org.springframework.aop.framework.ProxyFactoryBean錛岃€屼笉鏄疶ransactionProxyFactory瀹炵敤浠g悊鍒涘緩鑰呫€?/span>
鈶?span>   鍙︿竴縐嶅0鏄庢柟寮忥細(xì)BeanNameAutoProxyCreator
浣跨敤TransactionProxyFactoryBean褰撲簨鍔′唬鐞嗗寘瑁呭璞★紝浣犲彲浠ュ畬鍏ㄦ帶鍒朵唬鐞嗐€傚鏋滈渶瑕佺敤涓€鑷存柟寮忓寘瑁呭ぇ閲廱ean銆備嬌鐢ㄤ竴涓狟eanFactoryPostProcessor鐨勪竴涓疄鐜幫紝BeanNameAutoProxyCreator錛屽彲浠ユ彁渚涘彟澶栦竴縐嶆柟娉曘€?Spring涓紝涓€鏃pplicationContext璇誨畬瀹冪殑鍒濆鍖栦俊鎭紝瀹冨皢鍒濆鍖栨墍鏈夊疄鐜癇eanPostProcessor鎺ュ彛鐨刡ean錛屽茍涓旇瀹冧滑鍚庡鐞咥pplicationContext涓墍鏈夊叾浠栫殑bean銆傛墍浠ヤ嬌鐢ㄨ繖縐嶆満鍒訛紝姝g‘閰嶇疆鐨凚eanNameAutoProxyCreator鍙互鐢ㄦ潵鍚庡鐞嗘墍鏈堿pplicationContext涓墍鏈夊叾浠栫殑bean),騫朵笖鎶婂畠浠敤浜嬪姟浠g悊鍖呰璧鋒潵銆傜湡姝g敓鎴愮殑浜嬪姟浠g悊鍜屼嬌鐢═ransactionProxyFactoryBean鐢熸垚鐨勫熀鏈竴鑷淬€?/span>
鏈€鍚庯紝鎬葷粨涓€涓婼pring鐨勪紭鐐癸細(xì)
鈽?span style="font: 7pt 'Times New Roman'">              涓轟笉鍚岀殑浜嬪姟錛★及錛╂彁渚涗竴鑷寸殑緙栫▼妯″瀷錛屽JTA銆丣DBC銆丠ibernate銆乮BATIS鏁版嵁搴撳眰錛激錛?/span>
鈽?span style="font: 7pt 'Times New Roman'">              鎻愪緵姣斿ぇ澶氭暟浜嬪姟API鏇寸畝鍗曠殑銆佹槗浜庝嬌鐢ㄧ殑緙栫▼寮忎簨鍔$鐞咥PI
鈽?span style="font: 7pt 'Times New Roman'">              鏁村悎Spring鏁版嵁璁塊棶鎶借薄
鈽?span style="font: 7pt 'Times New Roman'">              鏀寔Spring澹版槑寮忎簨鍔$鐞?/span>


]]>
java浜嬪姟綆$悊http://www.aygfsteel.com/jxhkwhy/articles/309970.html綰擱鏈?/dc:creator>綰擱鏈?/author>Mon, 18 Jan 2010 08:55:00 GMThttp://www.aygfsteel.com/jxhkwhy/articles/309970.htmlhttp://www.aygfsteel.com/jxhkwhy/comments/309970.htmlhttp://www.aygfsteel.com/jxhkwhy/articles/309970.html#Feedback0http://www.aygfsteel.com/jxhkwhy/comments/commentRss/309970.htmlhttp://www.aygfsteel.com/jxhkwhy/services/trackbacks/309970.html杞嚜錛歨ttp://blog.csdn.net/sunyadongwanghbjm/archive/2007/08/20/1751518.aspx
浠€涔堟槸浜嬪姟:
棣栧厛,璇磋浠€涔堜簨鍔°€傛垜璁や負(fù)浜嬪姟錛屽氨鏄竴緇勬搷浣滄暟鎹簱鐨勫姩浣滈泦鍚堛€?/div>
浜嬪姟鏄幇浠f暟鎹簱鐞嗚涓殑鏍稿績姒傚康涔嬩竴銆傚鏋滀竴緇勫鐞嗘楠ゆ垨鑰呭叏閮ㄥ彂鐢熸垨鑰呬竴姝ヤ篃涓嶆墽琛岋紝鎴戜滑縐拌緇勫鐞嗘楠や負(fù)涓€涓簨鍔°€傚綋鎵€鏈夌殑姝ラ鍍忎竴涓搷浣滀竴鏍瘋瀹屾暣鍦版墽琛岋紝鎴戜滑縐拌浜嬪姟琚彁浜ゃ€傜敱浜庡叾涓殑涓€閮ㄥ垎鎴栧姝ユ墽琛屽け璐ワ紝瀵艱嚧娌℃湁姝ラ琚彁浜わ紝鍒欎簨鍔″繀欏誨洖婊氬埌鏈€鍒濈殑緋葷粺鐘舵€併€?/div>
浜嬪姟蹇呴』鏈嶄粠ISO/IEC鎵€鍒跺畾鐨凙CID鍘熷垯銆侫CID鏄師瀛愭€э紙atomicity錛夈€佷竴鑷存€э紙consistency錛夈€侀殧紱繪€э紙isolation錛夊拰鎸佷箙鎬э紙durability錛夌殑緙╁啓銆備簨鍔$殑鍘熷瓙鎬ц〃紺轟簨鍔℃墽琛岃繃紼嬩腑鐨勪換浣曞け璐ラ兘灝嗗鑷翠簨鍔℃墍鍋氱殑浠諱綍淇敼澶辨晥銆備竴鑷存€ц〃紺哄綋浜嬪姟鎵ц澶辮觸鏃訛紝鎵€鏈夎璇ヤ簨鍔″獎鍝嶇殑鏁版嵁閮藉簲璇ユ仮澶嶅埌浜嬪姟鎵ц鍓嶇殑鐘舵€併€傞殧紱繪€ц〃紺哄湪浜嬪姟鎵ц榪囩▼涓鏁版嵁鐨勪慨鏀癸紝鍦ㄤ簨鍔℃彁浜や箣鍓嶅鍏朵粬浜嬪姟涓嶅彲瑙併€傛寔涔呮€ц〃紺哄綋緋葷粺鎴栦粙璐ㄥ彂鐢熸晠闅滄椂錛岀‘淇濆凡鎻愪氦浜嬪姟鐨勬洿鏂頒笉鑳戒涪澶便€傛寔涔呮€ч€氳繃鏁版嵁搴撳浠藉拰鎭㈠鏉ヤ繚璇併€?/div>
Java涓殑浜嬪姟澶勭悊
涓€鑸琂2EE鏈嶅姟鍣ㄦ敮鎸佷笁縐嶇被鍨嬬殑浜嬪姟綆$悊銆傚嵆錛欽DBC浜嬪姟錛孞TA浜嬪姟錛屽鍣ㄧ鐞嗕簨鍔°€?/div>
鏈€濂戒笉瑕佸湪紼嬪簭涓悓鏃朵嬌鐢ㄤ笂榪頒笁縐嶄簨鍔$被鍨嬶紱騫朵笖錛屼簨鍔¤鍦ㄥ敖鍙兘鐭殑鏃墮棿鍐呭畬鎴愶紝涓嶈鍦ㄤ笉鍚屾柟娉曚腑瀹炵幇浜嬪姟鐨勪嬌鐢ㄣ€備笅闈婦涓や釜渚嬪瓙璇存槑JDBC鍙奐TA浜嬪姟錛屽鍣ㄧ鐞嗕簨鍔℃槸鍦ㄧ壒瀹氱殑妗嗘灦涓疄鐜扮殑錛堝錛歋pring鐨勪簨鍔$鐞嗭級
1. JDBC浜嬪姟
public String delete(String id) {
String ID 
= id;
銆€db 
= new getConnection();
銆€Connection con 
= db.getConnection();
銆€
try {
con.setAutoCommit(
false);
db.executeUpdate(
"delete from helloworld where ID=" + ID); //鏇存柊鎿嶄綔1
銆€銆€db.executeUpdate("delete from helloworld _book where ID=" + ID); //鏇存柊鎿嶄綔2
銆€銆€db.executeUpdate("delete from helloworld_user where ID=" + ID); //鏇存柊鎿嶄綔3
銆€銆€con.commit();//鎻愪氦JDBC浜嬪姟
銆€銆€con.setAutoCommit(true); 
db.close();
return “success”;
銆€}

銆€
catch (Exception e) {
銆€銆€con.rollBack();
//鍥炴粴JDBC浜嬪姟
銆€銆€e.printStackTrace();
db.close();
return “fail”;
銆€銆€}

}

 
濡備笂渚嬶細(xì)鏇存柊鎿嶄綔1錛?錛?鍙湁褰撲笁姝ユ搷浣滈兘鎴愬姛瀹屾垚鎵嶈繘琛屾彁浜わ紝鍚﹀垯鍥炴粴宸茬粡榪涜鐨勬搷浣溿€傝繖鏍鳳紝淇濊瘉浜嗘暟鎹殑瀹屾暣鎬э紝涓嶄細(xì)鍥犱負(fù)紿佺劧鏂數(shù)絳夌壒孌婃儏鍐靛鑷寸殑鏁版嵁閿欒銆?/div>
 
2錛嶫TA浜嬪姟
JTA鏄疛2EE浜嬪姟鏈嶅姟鐨勮В鍐蟲柟妗堛€佹弿榪頒簡J2EE妯″瀷浜嬪姟鎺ュ彛銆侸TA鍏鋒湁涓変釜涓昏鐨勬帴鍙o細(xì)UserTransaction銆乀ransactionManager銆乀ransaction鎺ュ彛銆傝繖浜涙帴鍙e叡浜叕鍏辯殑浜嬪姟鎿嶄綔錛屽錛歝ommit()銆乺ollback()銆傚悓鏃跺悇鑷篃鏈夎嚜宸辯殑鎿嶄綔銆備婦渚嬭鏄庯細(xì)
 
public String delete(String id) {
 String ID 
= id;
銆€db 
= new getConnection();
銆€db.getConnection();
銆€UserTransaction transaction 
= sessionContext.getUserTransaction();//鑾峰緱JTA浜嬪姟
銆€try {
銆€銆€transaction.begin(); 
//寮€濮婮TA浜嬪姟
銆€銆€db.executeUpdate("delete from helloworld where ID=" + ID);
銆€銆€db.executeUpdate(
"delete from helloworld _book where ID=" + ID);
銆€銆€db.executeUpdate(
"delete from helloworld _user where ID=" + ID);
銆€銆€transaction.commit(); 
//鎻愪氦JTA浜嬪姟
銆€銆€db.close();
銆€銆€
return”success”;
銆€}

銆€
catch (Exception e) {
銆€銆€
try {
銆€銆€銆€transaction.rollback();
//浜嬪姟鍥炴粴
銆€銆€}

銆€銆€
catch (Exception e) {
銆€銆€銆€e.printStackTrace();
銆€銆€}

銆€銆€exc.printStackTrace();
銆€銆€db.close();
銆€銆€
return “fail”;
銆€}

}
 
3錛庡鍣ㄤ簨鍔$鐞?/div>
鍦⊿pring銆丠ibernate絳夋鏋朵腑閮芥湁鍚勮嚜鐨勪簨鍔$鐞嗗姛鑳姐€傝櫧鐒惰〃鐜板艦寮忔湁浜涘樊鍒紝浣嗛兘鏄湪JAVA浜嬪姟綆$悊鐨勫熀紜€涓婂疄鐜扮殑銆傝繖閲屼笉榪涜浠嬬粛銆?/div>

]]> 主站蜘蛛池模板: 察隅县| 札达县| 库尔勒市| 宿州市| 将乐县| 阜新| 定南县| 佛学| 资兴市| 玉门市| 林口县| 江都市| 南靖县| 建阳市| 安陆市| 方城县| 青岛市| 禹州市| 锡林浩特市| 中宁县| 贵州省| 南平市| 民乐县| 呈贡县| 珲春市| 枣强县| 衡东县| 大连市| 栾川县| 乌海市| 平阴县| 通江县| 屯留县| 西平县| 西乌| 克什克腾旗| 都兰县| 临城县| 唐海县| 天祝| 大连市|