锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
鍙﹀錛屼綔涓烘灦鏋勮璁¤咃紝闈炲父闈炲父涓嶈禐鎴愬姩杈勫氨鎶婂緢搴曞眰鐨勬蹇墊壇榪涢珮灞傝璁′腑錛堜緥濡傝綰э紝鏁版嵁搴撲粈涔堢殑錛夛紝寰堝鏄撴妸鑷繁鍜屽埆浜烘悶鑳℃秱銆?br />鍙互鏈榪戠姸鎬佷笉濂斤紝瑕佷笉濂藉ソblog涓綃囷紝8榪囷紝鏈夊彞璇濇庝箞璇存潵鐫錛氣滈兘绱犻偅嫻簯鑰屽凡銆傘傘傗?/p>
鎯呭喌錛氬瓙鍏徃錛岄儴鍒嗭紝浜哄憳絳夊凡瀹屾垚鎵鏈夌紪鐮侊紙鐣岄潰錛屽晢涓氶昏緫錛屾暟鎹昏緫錛?br />鍙樺寲錛氶渶瑕佹妸榪欎釜鏈烘瀯浣撶郴緇勬垚涓轟竴棰楁爲(wèi)鐘剁粨鏋?br />絳栫暐錛氶壌浜庨櫎浜嗘爲(wèi)緇撴瀯澶栫殑鍏朵粬閮ㄥ垎浠g爜宸茬粡瀹屾垚錛岄偅涔堝簲璇ラ鍏堜繚鎸佽繖浜涗唬鐮佷笉浜堟敼鍔ㄣ傚鐢ㄤ慨鏀圭殑浼樺厛綰т粠楂樺埌浣庣殑欏哄簭濡備笅錛?br />聽 鐣岄潰脳JSP錛孉ction灞?br />聽 鍟嗕笟閫昏緫 Service灞?br />聽 鏁版嵁閫昏緫灞?br />聽 鏁版嵁鐗╃悊灞?br />鏈夌粡楠岀殑浜虹煡閬擄紝澶ч儴鍒嗘儏鍐典笅錛岃秺鏄笅灞傜殑鏀瑰姩錛岃秺鏄獎鍝嶈秺騫挎硾錛堟敞鎰忎笉鏄慨鏀歸毦搴︼級錛屾墍浠ユ垜浠彧鏈夊湪鏃犺鍙柦鐨勬儏鍐典笅錛屾墠榪涜浣庡眰鐨勪慨鏀廣?/p>
鍒嗘瀽: 鍥炲埌鎴戜滑鐨勯渶姹?浠庡姛鑳戒笂鐪嬶紝緇存姢涓涓粍緇囨満鏋勭殑闇姹傦紝宸茬粡娑電洊浜嗘瘡涓涓瓙緇撴瀯鐨勭淮鎶ら渶姹傦紝浠ラ儴闂ㄧ殑寤虹珛涓轟緥錛屽湪鏂板緩涓涓儴闂ㄦ椂錛屽悓鏃朵篃蹇呴』寤虹珛鏈烘瀯鏍?wèi)涓婄殑鑺傜偣锛?br />聽榪欐牱錛屽鏋滈渶瑕佺洿鎺ヤ嬌鐢ㄥ師鏈夌殑鍒涘緩閮ㄩ棬鐨勬墍鏈変唬鐮侊紝闇瑕佸湪鍏朵笂鍔犱笂鍒涘緩緇勭粐鏈烘瀯鎵闇瑕佺殑鐖惰妭鐐癸紝浠ュ強(qiáng)褰撳墠鑺傜偣鍚嶇О淇℃伅(鍦ㄨ繖閲宒epartment鐨勫鍔犵晫 闈SP鏄渶瑕佷慨鏀圭殑,涓嶈繃瀹為檯涓婃垜娌℃湁淇敼璇ユ枃浠?鑰屾槸鍒╃敤DHTML鏉ュ姩鎬佸姞鍏ラ渶瑕佹柊澧炲姞鐨勪俊鎭?,鐒跺悗鎻愪氦緇欏師鍒涘緩閮ㄩ棬鐨刄RI 錛坉epartmentSave.action錛夊拰緇勭粐鏈烘瀯鍒涘緩URI(orgCreate.action)錛屽湪榪欓噷鎴戜滑鍒╃敤ww鎻愪緵鐨刟ction chain鍔熻兘鏉ュ畬鎴愯繖涓や釜鎿嶄綔銆?br />聽榪欓噷闇瑕佷慨鏀筪epartment.action鐨勯厤緗?鎷︽埅save鏂規(guī)硶浣垮叾鎵ц瀹屽悗璺寵繃鍘熸潵鐨剅elist緇撴灉欏甸潰杞悜緇勭粐緇撴瀯鐨勫垱寤簅rgCreate.action錛?br />聽<action name="unitSave" class="com.wolfsquare.ibase.org.action.UnitAction" method="save"> 聽聽聽聽聽聽聽 灝辮繖鏍?鎴戜滑瀹屾垚浜嗘柊澧烇紝淇敼緇勭粐鏈烘瀯鐨勫姛鑳藉悎鎴?铏界劧鏈夌偣鎷栨矒,浣嗘槸榪樻槸杈懼埌浜嗗鐢?灝戜慨鏀瑰師鏈変唬鐮?鑰屼笖鎵╁睍鎬т篃寰堝ソ鐨勭洰鏍囥傝繖涓婄瘒璇寸殑鏄袱涓畝鍗曚笟鍔$殑鍔熻兘鎻夊悎闂,涓嬬瘒鎴戜滑鏉ョ湅鐪嬬◢寰鏉傜偣鐨勬儏鍐?鐪嬬湅榪樿兘涓嶈兘緇х畫渚濊懌鑺︾敾鐡㈡潵瀹屾垚鍔熻兘鍚堢殑鎴?br />聽聽 棣栧厛鎴戜滑鎼炴竻妤歭og4j鑳藉共浠涔堬紝綆鍗曟潵璇村氨鏄彁渚涗竴涓褰曚笉鍚岀駭鍒俊鎭唴瀹圭殑鏃ュ織宸ュ叿錛?br />鍙互鎶婁笉鍚岀駭鍒紝涓嶅悓鍖呰礬寰勭殑淇℃伅錛屼互鎸囧畾鏍煎紡杈撳嚭鍒板縐嶈澶囷紙鎺у埗鍙幫紝鏂囦歡絳夛級 ==========log4j.properties================== log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.fileout=org.apache.log4j.RollingFileAppender log4j.rootCategory=INFO, stdout, fileout 榪欎釜鏂囦歡鍙互鍒掍負(fù)涓夊皬鍧?/p> ===========絎竴鍧楀畾涔変簡涓涓悕涓?stdout 鐨刟ppender鍜宭ayout (appender,layout鐨勬蹇靛悗闈㈠啀瑙i噴錛岀洰鍓嶅厛璁扮潃鏈夎繖鏍蜂袱涓悕璇?錛?/p> log4j.appender.stdout=org.apache.log4j.ConsoleAppender ============絎笁鍧楀畾涔変簡鍚嶅瓧鍒嗗埆涓簉ootCategory,log4j.logger.com.wolfsquare.log2鐨勪袱涓猯ogger rootCategory logger鏄己鐪佺殑logger錛岃褰曟墍鏈夌殑鍖呯殑淇℃伅杈撳嚭銆?br />絎簩涓猯ogger鏄彧杈撳嚭鎸囧畾鍖卌om.wolfsquare.log2涓嬬殑鏃ュ織淇℃伅銆?br />閭d箞INFO,DEBUG鍙堟槸浠涔堟剰鎬濆憿錛屼粬浠槸淇℃伅鐨勫垎綰ф爣璇嗭紝閫氳繃緇ф壙瀹炵幇榪欎釜瀹炵幇鑷畾涔夌駭鍒殑鍒嗙駭銆?br />絎笁鍧楅厤緗袱鍙ョ殑鎰忔濇槸榪欐牱鐨勶細(xì) 杈撳嚭淇℃伅鐨勫垎綾葷駭鍒槸DEBUG > INFO > WARN > ERROR,淇℃伅緇嗚妭鐢辯粏鍒扮矖錛屾寚瀹氳緭鍑烘煇涓綰у埆鐨勪俊鎭椂錛?br />榪囩粏鐨勪俊鎭緭鍑哄皢浼?xì)琚拷鐣?/p> 濡傛灉涓涓厤緗腑鏈夊涓猯ogger錛屼粬浠箣闂翠細(xì)鏈変粈涔堝叧緋誨憿錛熺瓟妗堟槸錛屽湪杈撳嚭涓婏紝浠栦滑娌℃湁浠諱綍鍏崇郴錛岄兘鏄嫭绔嬭繍浣滅殑錛?br />涓嶇浉鍏崇殑錛屼絾鏄湪閰嶇疆涓婏紝鐖跺寘鐨勯厤緗細(xì)浼犵粰瀛愬寘錛屽鏋滃瓙鍖呮病鏈夊彟澶栧畾涔夐厤緗殑璇濄?br />渚嬪涓婇潰閰嶇疆鏂囦歡涓殑涓や釜logger錛?br />log4j.logger.com.wolfsquare 榪欓噷璁や負(fù) log4j.logger.com.wolfsquare.log2 緇ф壙鑷?log4j.logger.com.wolfsquare錛屼粬浠殑閰嶇疆澹版槑濡備笅錛?br />log4j.rootCategory=INFO, stdout, fileout 鍚屾椂闇瑕佸己璋冪殑鏄紝濡傛灉涓や釜logger鏈夌戶鎵垮叧緋伙紝涓旇緭鍑哄埌鍚屼竴涓猘ppender錛屾牴鎹緭鍑虹嫭绔嬪師鍒欙紝閭d箞灝嗕細(xì)鍑虹幇涓よ涓鏍風(fēng)殑淇℃伅錛?br />渚嬪涓婇潰鐨勪袱涓猯ogger瀹氫箟浼?xì)瀵艰嚧杩欐狅L(fēng)殑鎯呭喌銆?br />鏈鍚庝互涓騫呭浘鏉ユ鎷細(xì) <bean id="serviceA" class="A" autowire="byName" lazy-init="true"> 鐢變簬涓や釜涓氬姟鏈嶅姟浜掔浉璋冪敤鐨勮礬寰勬槸涓嶇浉浜ょ殑錛屾墍浠ラ噰鐢ㄤ簡涓縐嶅彉閫氱殑鏂規(guī)硶錛屽湪澹版槑serviceA鏃訛紝
鍘熸枃鍦ㄨ繖:http://www.tkk7.com/RongHao/archive/2006/07/03/56258.html
浠旂粏鍒嗘瀽涓,浜?涓?鍥涙潈闄愯儗鍚庣殑瀹炶川鍙互鍙戠幇:
涓緋葷粺鏉冮檺鐨勬蹇墊湁涓浜涘啑浣?寰堥毦鎯寵薄榪欐牱涓縐嶆儏鍐?浣犲凡緇忔湁浜嗗瓙緋葷粺涓嬬殑寰堝鏉冮檺,緇撴灉鍥犱負(fù)娌℃湁妯″潡鏉冮檺鑰屼嬌寰楁棤娉曚嬌鐢ㄨ妯″潡榪涜浠諱綍鎿嶄綔,鍒嗛厤鏉冮檺鐨勪漢瑕侀潪甯稿皬蹇冩墠琛?榪欎釜涓栫晫宸茬粡澶熷鏉備簡,涓嶈鍐嶇粰寮鍙?閮ㄧ講浜哄憳澧炲姞澶嶆潅搴︿簡.寰堟槑鐧界殑,榪欎釜鏉冮檺鏄笉闇瑕佽祫婧愮殑鏉冮檺
浜屾暟鎹簱鎿嶄綔鏉冮檺鐨勬蹇?鏈変竴鐐圭枒鎯?涓嶇煡閬撲負(fù)浠涔堣寤虹珛榪欐牱鐨勪竴涓蹇?鍜岃綰ф潈闄愭湁浠涔堝尯鍒憿? 浠庝綘鐨勪笂涓嬫枃鐞嗚В鏉ョ湅,浼間箮鏄繖鏍峰瓙鐨?鏈夋搷浣淴琛ㄧ殑涓氬姟,濡傛灉鐢ㄦ埛鏈夊鍔犳潈闄?鍒欏彲浠ヤ換鎰忓鍔犳暟鎹?濡傛灉鐢ㄦ埛鏈夌紪杈戞潈闄?鍒欏彲浠ョ紪杈戜換鎰忔暟鎹?瀹為檯涓婂搴旀爣鍑嗘潈闄愭ā鍨嬩負(fù):涓嶉渶瑕侀檺瀹氳祫婧愮殑鎿嶄綔,鍗充笉闇瑕佽祫婧愭爣璇嗙殑鏉冮檺.
涓夎綰ф暟鎹潈闄?榪欎釜姒傚康寰堢洿鐧?瀵瑰簲鏍囧噯鏉冮檺妯″瀷灝辨槸: 璧勬簮(琛屾暟鎹?+鎿嶄綔
鍥涘垪綰ф暟鎹潈闄?鐢變簬涓嶆槸閽堝鏌愮壒瀹氳鏁版嵁,鎵浠ュ畠涔熸槸鏃犺祫婧愬瀷鏉冮檺
灝辮繖鏍?鎵鏈夌殑鏉冮檺鏈緇堝彲鍒掍負(fù)闇瑕佽祫婧愭爣璇嗗拰涓嶉渶瑕佽祫婧愭爣璇?鎹㈠彞璇濊,鎵鏈夋潈闄愬彲鍒掑垎涓烘帶鍒舵煇浜涢泦鍚堢殑鏉冮檺鍜屾帶鍒跺崟浣撶殑鏉冮檺涓ょ,鍦ㄦ煇浜涙椂鍊?涔熺О涔嬩負(fù) 鍔熻兘鏉冮檺鍜屾暟鎹潈闄?/p>
璋堝埌鎶婃潈闄愬垎緇欏埆浜?寰堣嚜鐒剁殑灝辨槸濡備綍鎺у埗鏉冮檺鐨勬潈闄愮殑闂浜?寰堟嫍鍙?鏄惂?浠旂粏鎯蟲兂,榪欐牱寰堢洿瑙?涔熸病鏈変粈涔堝悗閬楃棁,鏉冮檺鑷掑綊鎺у埗鍜岃嚜瑙i噴,鐪熸槸涓涓畬緹庣殑寰幆.
鏈夌埍鎬濊冪殑鍚屽鎯蟲繁浜?浼?xì)瑙夊緱闈炲笖R夯鐑?闅懼疄鐜?褰撶劧,姒傚康涓婁竴鍥炰簨,鍏蜂綋瀹炵幇涓婂彲浠ユ槸鍙︿竴鍥炰簨,鍙互鍋氬緢澶氱殑鍙橀氭潵杈懼埌鐩殑.鍙淇濇寔姒傚康涓婄殑綆鍗曟?灝辮凍浠ヤ嬌寰楅潪甯稿鐨勪漢寰椾互瑙h劚浜嗐?/p>
聽聽 <result name="input">/org/unit/input.jsp</result>
聽聽 <result name="relist" type="chain">
聽聽聽聽聽聽 <param name="actionName">orgCreate</param>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <param name="namespace">/org</param>聽聽
聽聽聽聽聽聽聽聽聽聽聽 </result>
聽聽 <result name="xxx" type="redirect">/org/unit.action?start=${start}</result>
聽聽 <interceptor-ref name="validationStack"/>
聽 </action>
鍙兘鏈夊悓瀛︾湅鍒拌繖閲屼細(xì)闂細(xì)鍒涘緩緇勭粐鑺傜偣鏃跺簲璇ヨ繕闇瑕佸叧鑱斿墠闈㈠垱寤虹殑閮ㄩ棬瀵硅薄鍟婏紝榪欎釜鎿嶄綔鏄浣曞疄鐜扮殑錛熶俊鎭槸濡備綍浼犻掔殑錛?br />鍦ㄨ繖閲岋紝鐢變簬鏁翠釜鏋舵瀯浣撶郴騫舵病鏈夋敮鎸佽繖縐嶄俊鎭紶閫掔殑鍔熻兘錛屾墍浠ュ彧濂戒互涓縐嶆瘮杈冣濊剰鈥滅殑鏂瑰紡瀹炵幇錛?br />聽聽聽聽聽聽聽 鍦╠epartment.action綾婚噷澧炲姞浜嗕竴涓柟娉昰etModel()榪斿洖鍒氬垰鍒涘緩鐨勯儴闂ㄥ璞★紝鐒跺悗鍦╫rg.action綾諱腑澧炲姞涓涓帴鏀剁殑鏂規(guī)硶setModel(object o)榪欐牱鍦ㄦ暣action chain鎵ц鐨勬椂鍊欙紝ww浼?xì)鑷姩灏唃etModel鍚庣殑鏁版嵁濉叆setModel涓紝榪欐牱鍋氱殑鍚庢灉鏄互鍚庡鍔犳柊鐨勬満鏋勭被鍨嬬殑鍔熻兘鏃訛紝action蹇呴』涔熺収榪欐牱鐨勮鎰忚緗甮etModel鏂規(guī)硶銆傦紙濡傛灉瑕佽В鍐寵繖涓棶棰橈紝榪欒兘闇瑕佷嬌鐢ㄤ竴涓壒瀹氱殑Context錛岀劧鍚庢嫤鎴寚瀹歋ervice鐨勫垱寤烘柟娉曪紝鎶婂垱寤虹粨鏋滄斁鍏ontext錛屼笉榪囪繖鍙堝甫鏉ュ浣曟竻闄ontext鐨勯棶棰橈紝浜庢槸鍙堣姹傚姪涓巜w鐨刬nterspector錛屼笓闂ㄥ啓涓涓嫤鎴櫒鏉ユ摝灞佽偂錛屽楹葷儲銆傘傘傦級
(鏈畬寰呯畫)聽聽
鐞嗚В浜唋og4j鐨勯厤緗敤娉曪紝浠ヤ笅鏄垜瀵筶og4j閰嶇疆鐨勪竴鐐硅璇嗭紝濡傛湁璋榪樿涓嶅悵璧愭暀.
鍦ㄧ▼搴忎腑錛屽彲浠ヤ互浠ヤ笅鏂瑰紡鏉ヤ嬌鐢?br />聽聽 Log log = org.apache.commons.logging.LogFactory.LogFactory.getLog(yourClassName.class);
聽聽log.debug("debug message -------------------");
聽聽log.info("info message ******************");
聽聽log.warn("warn message +++++++++++++++");
聽聽log.error("error msg=================");
聽聽
鏈枃涓昏璁茬殑鏄浣曢厤緗甽og4j錛屽厛璁╂垜浠厛鐪嬬湅涓涓吀鍨嬬殑log4j閰嶇疆錛毬犅?
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{MM-dd HH\:mm\:ss.SSS} %-5p [%F\:%L]%x %m%n
log4j.appender.fileout.File=D:/workspace/log4jtest/log/application.log
log4j.appender.fileout.MaxFileSize=10000KB
log4j.appender.fileout.MaxBackupIndex=10
log4j.appender.fileout.layout=org.apache.log4j.PatternLayout
log4j.appender.fileout.layout.ConversionPattern=%d{MM-dd HH:mm:ss.SSS}[%24F:%-3L:%-5p]%x %m%n
log4j.logger.com.wolfsquare.log2=DEBUG,stdout
===================================
瀹氫箟stdout鐨勫疄闄呰緭鍑哄疄鐜扮被錛屼粠榪欎釜appender瀹炵幇綾誨悕鍙互鐚滃埌錛岃繖涓被鏄礋璐f帶鍒跺彴杈撳嚭鐨勩?br />log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
瀹氫箟stdout鐨勮緭鍑鴻楗板櫒
log4j.appender.stdout.layout.ConversionPattern=%d{MM-dd HH\:mm\:ss.SSS} %-5p [%F\:%L]%x %m%n
瑁呴グ鍣ㄥ弬鏁伴厤緗?/p>
============絎簩鍧楀畾涔変簡涓涓悕涓?fileout 鐨刟ppender鍜宭ayout:
log4j.appender.fileout=org.apache.log4j.RollingFileAppender
鍚岀悊鍙寽榪欎釜瀹炵幇綾繪槸杈撳嚭鍒版枃浠剁殑
log4j.appender.fileout.File=D:/workspace/log4jtest/log/application.log
log4j.appender.fileout.MaxFileSize=10000KB
log4j.appender.fileout.MaxBackupIndex=10
log4j.appender.fileout.layout=org.apache.log4j.PatternLayout
log4j.appender.fileout.layout.ConversionPattern=%d{MM-dd HH:mm:ss.SSS}[%24F:%-3L:%-5p]%x %m%n
log4j.rootCategory=INFO, stdout, fileout
log4j.logger.com.wolfsquare.log2=DEBUG,stdout
rootCategory 鎶婃墍鏈夌被鐨処NFO綰у埆浠ヤ笂鐨勪俊鎭緭鍑哄埌stdout鍜宖ileout涓や釜appender涓紝
logger.com.wolfsquare.log2錛屾妸com.wolfsquare.log2鍖呬腑鐨勬墍鏈夌被錛堝寘鎷瓙鍖咃級DEBUG綰у埆錛堝惈錛変互涓婄殑淇℃伅杈撳嚭鍒皊tdout 涓?br />涓涓猯ogger鍙互杈撳嚭鍒板緢澶氫釜璁懼涓紙appender錛?濡傛灉闇瑕佸鍔犺緭鍑鴻澶囧垯鐢ㄥ垎鍙峰垎闅斿紑appender鍚嶇О鍗沖彲銆?/p>
log4j.logger.com.wolfsquare.log2
log4j.logger.com.wolfsquare.log2=,stdout
娉ㄦ剰絎簩鍙ユ病鏈夋寚瀹氳緭鍑虹駭鍒?閭d箞鏍規(guī)嵁閰嶇疆緇ф壙瑙勫垯浼?xì)鐟翩壙鐖秎ogger鐨勯厤緗紝鍦ㄨ繖閲屽氨鏄疘NFO銆?/p>
<property name="serviceB"><ref local="serviceB"/></property>
</bean>
<bean id="serviceB" class="B" autowire="byName" lazy-init="true">
<property name="serviceA"><ref bean="serviceA"/></property>
</bean>
浣嗘槸浣滀負(fù)涓涓笟鍔℃帴鍙o紝瀹冨簲璇ユ槸涓嶉渶瑕佸叧蹇冧簨鍔★紝鍥炴粴榪欎簺鏃犲叧鐨勪笢瑗匡紝
浣嗙幇瀹炲張鏈夎繖鏍風(fēng)殑闇姹傦紝鎵浠ユ垜浠繀欏諱繚璇侀忔槑鐨勫疄鐜拌繖涓姛鑳斤紝浜庢槸寮?BR>鍏ヤ簡AOP鏂瑰紡瑙e喅璇ラ棶棰橈紝鍒╃敤鐨勬槸Spring鑷甫鐨刼rg.springframework.t
ransaction.interceptor.TransactionProxyFactoryBean.
閲嶆柊澹版槑鏂囦歡濡備笅錛?BR> <bean id="baseTxProxy" lazy-init="true"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="proxyTargetClass"><value>true</value></property>
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<bean id="serviceA" parent="baseTxProxy">
<property name="target"><ref local="serviceAImpl"/></property>
</bean>
<bean id="serviceAImpl" class="serviceA" autowire="byName" lazy-init="true">
<property name="serviceB">
<ref bean="serviceB"/>
</property>
</bean>
<bean id="serviceB" parent="baseTxProxy" lazy-init="true">
<property name="target"><ref local="serviceBImpl"/></property>
</bean>
<bean id="serviceBImpl" class="D" lazy-init="true">
<property name="serviceA">
<ref bean="serviceA"/>
</property>
</bean>
浜庢槸闂灝卞嚭鐜頒簡錛孲pring鎶ヤ簡FactoryBeanCircularReferenceException錛屾棤娉曠戶緇畬鎴愯緗伐浣溿?BR>鏌ョ湅TransactionProxyFactoryBean婧愮爜錛屽叾瀹炵幇浜咶actoryBean鍜孖nitializingBean鎺ュ彛錛屽簲璇ユ槸
鍋氫簡浠g悊涔嬪悗錛屼袱涓唬鐞咮ean闇瑕佺瓑寰呮墍鏈塀ean璁劇疆瀹屾垚鍚庢墠浼?xì)鏍囪瘑鐘舵佷負(fù)鍒濆鍖栧畬姣曪紝浜庢槸閫犳垚浜?BR>鍐茬獊銆?/P>
鐩存帴瀹氫箟serviceB錛?BR> <bean id="serviceAImpl" class="serviceA" autowire="byName" lazy-init="true">
<property name="serviceB">
<bean class="B" autowire="byName"/>
</property>
</bean>
鐩稿綋浜巗erviceB鍜宻erviceA涓嬌鐢ㄧ殑serviceB涓嶆槸鍚屼竴涓疄渚嬨?BR>
浣嗘槸濡傛灉紜疄璋冪敤閲嶅悎鏃舵庝箞鍔烇紵
瑙e喅鏂規(guī)硶鏄繖鏍風(fēng)殑錛?BR>
<bean id="serviceAImpl" class="serviceA" autowire="byName" lazy-init="true">
<property name="serviceB">
<ref bean="serviceBImpl"/>
</property>
</bean>
闈炲父綆鍗曪紝serviceAImpl璋冪敤鏃訛紝鍙兘宸茬粡鍦ㄤ簨鍔$幆澧冧腑浜嗭紝涓嶉渶鍐嶄嬌鐢╯erviceB浠g悊鐨勪簨鍔℃敮鎸侊紝
浜庢槸鐩存帴寮曠敤serviceB瀹炰緥銆傝繖涓柟娉曟槸鎴戝啓榪欑瘒鏂囩珷鏃舵兂鍒扮殑錛?_-!!!錛岀湅鏉ョ煡璇嗘灉鐪熻繕鏄ソ濂?BR> 鏁寸悊鍛銆?/P>
hbm鏂囦歡閲囩敤閫氶厤絎﹁幏鍙栵細(xì)
闂鐥囩姸錛?/P>
搴旂敤鍚姩鎶ラ敊璇翠笉鑳介噸澶嶅畾涔夋煇綾伙紝鍘繪帀璇ョ被鍚庝粛鐒舵姤涓嬩竴涓被閲嶅瀹氫箟銆?/P>
浠旂粏鏌ョ湅Log杈撳嚭鍙戠幇錛屾墍鏈夌殑hbm鏂囦歡鍧囨壘鍒頒簡涓や喚 -_-!!!
欏圭洰緇勮涓哄簲璇ユ槸websphere涓嶅お鍘氶亾錛屽湪classpath涓嬌鐢ㄤ簡澶氬鐩綍(web-inf & classes)錛屽茍浠ヨ繖浜涚洰褰曚負(fù)鏍硅繘琛岄掑綊鎼滅儲鍖歸厤鏂囦歡錛屽彲鏄鏋滆繖浜涚洰褰曟湁鍖呭惈鍏崇郴錛學(xué)ebSphere灝辨病鏈夊鐞嗛噸澶嶆煡鎵劇殑鏂囦歡浜嗐?/P>
浜庢槸鍦ㄤ互涓婇厤緗腑鏀逛負(fù)錛?/P>
闂铏界劧瑙e喅浜嗭紝鍙槸tomcat涓嵈鍙堟棤鏁堜簡銆?錛氾紙
浠涔堟椂鍊欙紝浼佷笟搴旂敤鎵嶈兘涓嬈℃嫹璐濓紝鍒板榪愯鍟婏綖锝?/P>
鐜錛?JDBC椹卞姩inet tds椹卞姩(鐗堟湰涓嶆槑),SQLServer2K
闂鐥囩姸錛氬浜庢暟鎹簱澹版槑涓簐archar鐨勯暱搴﹀ぇ浜?56鐨勫瓧孌碉紝鍙互姝e父淇濆瓨錛屼絾鏄棤娉曞彇鍑哄浜?56瀛楃浠ュ悗鐨勫唴瀹?/P>
闂2錛氫嬌鐢℉ibernate鏄犲皠鏃?闀垮害瀛楃涓蹭繚瀛樺悗錛屽彇鍑哄鍔犱簡涓涓┖鏍?/P>
鐜錛歩net tds椹卞姩Hibernate2.1.8,SQL Server2K
闂鐥囩姸錛氫繚瀛?闀垮害瀛楃涓插悗錛屽彇鍑哄鍔犱簡澶氫綑鐨勭┖鏍箋?/P>
浠ヤ笂涓や釜闂閮芥槸鍥犱負(fù)娌℃湁浣跨敤鏈鏂扮殑閫氳鍗忚寮曡搗鐨勶紝淇敼URL澹版槑鏂瑰紡濡備笅錛?/P>
jdbc:inetdae7:127.0.0.1:1433?database=xxx
闂瑙e喅錛屾敹宸ャ?/P>
ps:鍙戠幇鍗忚inetdae鏃訛紝鏁版嵁搴撳瓧孌典負(fù)Null鏃訛紝Hibernate鍙栧嚭澹版槑涓哄熀鏈被鍨嬶紙渚嬪boolean錛夌殑瀵硅薄灞炴у茍涓嶄細(xì)鎶ラ敊錛屽疄闄呬笂鍦ㄥ叾浠栨暟鎹簱濡侽racle鍜屾柊鍗忚涓婃槸浼?xì)鎶ラ敊鐨勩備負(fù)浜嗛伩鍏嶆綾婚棶棰樺嚭鐜幫紝鏈濂借繕鏄弗鏍奸伒瀹堬細(xì)Hibernate澹版槑瀵硅薄鐨勫熀鏈被鍨嬪睘鎬э紝涓瀹氫笉鑳藉湪鏁版嵁搴撶緗負(fù)絀哄箋?/P>
ps2:鍦ㄨВ鍐充互涓婇棶棰樹腑鍙戠幇,Oracle灞呯劧瀵逛紶浜?闀垮害瀛楃涓詫紝浼?xì)铦{涓虹┖鍊?涓嶇煡閬撴槸涓轟簡鑺傜渷絀洪棿榪樻槸鍒殑浠涔堢悊鐢便?_-!!!
錛?STRONG>鍏ㄦ枃瀹?/FONT>錛?/P>
浠ヤ笂鍋氭硶褰㈣薄鐨勮搴旇鏄繖鏍鳳細(xì)鎶婇渶瑕佷駭鐢熺殑鍥懼艦瀵硅薄鍏堟斁澶э紝鐢誨湪涓寮犫滅焊涓娾濓紝鐒跺悗鏁翠綋緙╁皬錛岃繖鏍風(fēng)簿搴﹀氨鎻愰珮浜嗐?/P>
tips 1錛氬湪涓鑸紒涓氭姤琛ㄨ〃鏍兼墦鍗頒腑錛屼嬌鐢?44DPI寰楀埌鐨勮〃鏍肩嚎鐨勫搴︾湅璧鋒潵鏈鑸掓湇銆?BR> tips 2錛氱幇鍦ㄥ彿縐?00DPI鐨勬墦鍗版満鍏跺疄鏄?76DPI錛屽鏋滄兂浣跨敤榪欎釜鍒嗚鯨鐜囩殑綺懼害錛岄渶瑕佺敤濂戒竴鐐圭殑綰稿紶錛屽洜涓哄凡緇忓埌鏋侀檺浜嗭紝綰稿紶紼嶅樊鐐癸紝鎵撳嵃澧ㄧ矇灝辨簿涓嶄笂錛屽鑷寸嚎浣撴畫緙恒?/P>
闄勬簮鐮侊紙淇敼鍒嗚鯨鐜囧氨鏀瑰姩鍙橀噺iResMul灝卞ソ錛夛細(xì)
錛?STRONG>鍏ㄦ枃瀹?/FONT>錛?nbsp;
// 璁㈠崟鏈嶅姟鍙礋璐e仛濂借嚜宸辯殑浜?BR>
鑰屼負(fù)浜嗘嫤鎴換浣曠殑鏂規(guī)硶璋冪敤錛屽垯瀹炵幇浜嗘嫤鎴櫒EventBrocaster錛?BR>
浜嬩歡渚﹀惉鍣細(xì)
鐒跺悗錛屽湪Spring閰嶇疆閲屽皢榪欎簺緇勪歡鍏ㄩ儴榪炴帴璧鋒潵錛?/P>
1.OrderService瀹炵幇:
<bean id="orderServiceImpl" class="OrderService" autowire="byName">
</bean>
2. 澹版槑OrderService浠g悊:
<bean id="orderService" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="target">
<ref local="orderServiceImpl"/>
</property>
<property name="interceptorNames"> <!--鎷︽埅鍣ㄥ垪琛?->
<list>
<value>eventBrocaster</value>
</list>
</property>
<property name="singleton">
<value>true</value>
</property>
</bean>
3.浜嬩歡騫挎挱鎷︽埅鍣?BR> <bean id="eventBrocaster" class="com.wolfsquare.core.service.EventBrocaster" singleton="true">
<property name="lifecycleListeners">
<list>
<ref bean="orderEventListener"/>
</list>
</property>
</bean>
4.鍏蜂綋鐨勮儲鍔″瓙緋葷粺鐨勪睛鍚櫒瀹炵幇涓庤儲鍔$郴緇熺殑閫氳錛?BR> <bean id="orderEventListener" class="OrderEventListener" autowire="byName">
<propety name="financialService"><ref bean="financialService"/></property>
</bean>
榪欐牱錛屾垜浠笌鍏蜂綋瀹炵幇鏃犲叧鐨勪簨浠跺箍鎾氨鍋氬埌浜嗭紝鑱槑鐨勬湅鍙嬬湅鍒拌繖閲岋紝鑲畾鎯沖埌浜嗘嫤鎴櫒鏂瑰紡涓嶄粎浠呴傜敤涓庝簨浠跺箍鎾紝榪樺彲浠ュ疄鐜頒簨鍔$殑緇熶竴綆$悊錛屼簨瀹炰笂Spring鐨勪簨鍔$鐞嗗氨鏄繖鏍峰畬鎴愮殑錛岃繕鍙互瀹炵幇鏉冮檺鐨勬帶鍒朵緥濡侫cegi錛岀畝鐩存湁鐐硅薄涓囪兘鐨勮兌姘達(dá)紝鍛靛懙銆?/P>
浠庝袱綃囨枃绔犵殑閫愭鎺㈣涓嬶紝鍚屼竴涓満鍣紝鍚屼竴涓櫄鎷熸満涔嬪唴鐨勬暟鎹氳閮藉彲浠ュ疄鐜頒簡錛岄偅涔堝紓鏋勭郴緇熷拰澶氳櫄鎷熸満闂寸殑閫氳鍙堝浣曞鐞嗗憿錛屼簬鏄疎SB錛堜紒涓氭湇鍔℃葷嚎錛夌殑姒傚康灝辨參鎱㈡誕鐜板嚭鏉ヤ簡錛屼笉榪囪繖涓笉鍦ㄦ湰鏂囨帰璁ㄧ殑鑼冪暣浜嗭紝涔熻鍦ㄤ笉涔呯殑灝嗘潵錛屾垜浼?xì)琛ヤ笂杩欎竴綃囥?/P>
錛堝叏鏂囧畬錛?/STRONG>