锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
spring bean 瀹氫箟鍙兘鍖呭惈澶ч噺鐨勯厤緗俊鎭紝鍖呮嫭瀹瑰櫒鐩稿叧鐨勪俊鎭紙姣斿鍒濆鍖栨柟娉曪紝闈欐佸伐鍘傛柟娉?/p>
絳夛級銆佹瀯閫犲嚱鏁板弬鏁般佸睘鎬х瓑銆傚鏋滀袱涓猙ean涔嬮棿鐨勯厤緗俊鎭ぇ鍚屽皬寮傦紝鍙噰鐢╞ean鐨勭戶鎵挎潵鍑忓皯閲?/p>
澶嶉厤緗伐浣溿傚瓙bean瀹氫箟鍙互浠庣埗bean瀹氫箟緇ф壙閮ㄥ垎閰嶇疆銆傚畠涔熷彲瑕嗙洊涓浜涢厤緗紝鎴栬呮坊鍔犱竴浜涢厤緗?/p>
銆備嬌鐢ㄧ戶鎵塊厤緗彲浠ヨ妭鐪佸緢澶氳緭鍏ュ伐浣滐紝瀹為檯涓婂氨鏄竴縐嶆ā鏉垮艦寮忋?/p>
spring涓簨鍔¢厤緗腑灝辨湁榪欐牱渚嬪瓙錛屼負浜嗕嬌鐢ㄤ簨鍔″彧瑕佺埗閰嶇疆浜嗕簨鍔′唬鐞嗗氨鍙互浜嗭紝鎵鏈夐渶瑕佷簨鍔$殑
bean鍙緇ф壙鐖跺氨鍙互浜嗐傝鍒拌繖涓氨鍦ㄥ璇村嚑鍙ワ紝鐖禸ean閫氬父涓嶉渶瑕佸疄渚嬪寲鐨勶紝鑰屼粎浠呬綔涓哄瓙bean
瀹氱殑鐨勬ā鏉夸嬌鐢紱鑰孉pplicationContext榛樿棰勫垵濮嬪寲鎵鏈夌殑singleton bean銆備負浜嗛樆姝㈢埗bean琚
鍒濆鍖栵紝鍙互浣跨敤abstract灞炴ц緗埗bean涓烘娊璞ean銆傚鍣ㄤ細蹇界暐鎵鏈夌殑鎶借薄bean瀹氫箟錛岄鍒濆鍖?/span>
鏃朵笉鍒濆鍖栨娊璞ean銆?/p>
2錛?spring 浜嬪姟綆$悊
浼犵粺鐨凧2EE寮鍙戣呭浜嬪姟綆$悊鍙兘閲囩敤涓ょ絳栫暐
錛?錛夛紝鍏ㄥ眬浜嬪姟錛氬叏灞浜嬪姟閫氬父鐢卞簲鐢ㄦ湇鍔″櫒綆$悊錛屼嬌鐢↗TA銆傚叏灞浜嬪姟鍙法瓚婂涓簨鍔℃х殑璧勬簮錛屼繚璇?/p>
鍦ㄥ涓簨鍔℃ц祫婧愰棿璺ㄨ秺鏃惰祫婧愪竴鑷存с?br /> 錛?錛夛紝灞閮ㄤ簨鍔?/span>錛氬眬閮ㄤ簨鍔″拰鐗瑰畾璧勬簮鐩稿叧錛屽錛屼竴涓拰JDBC閾炬帴鍏寵仈鐨勪簨鍔°傝浜嬪姟灝借兘淇濊瘉瀵硅
JDBC榪炴帴鏁版嵁搴撶殑涓鑷存э紝瀵瑰眬閮ㄤ簨鍔★紝搴旂敤鏈嶅姟鍣ㄤ笉闇瑕佸弬涓庝簨鍔$鐞嗭紝涓嶈兘淇濊瘉璺ㄨ秺澶氫釜璧勬簮鐨?/p>
浜嬪姟姝g‘鎬с?/p>
3錛岀紪紼嬪紡浜嬪姟
Spring 鎻愪緵涓ょ緙栫▼寮忕殑浜嬪姟綆$悊
錛?錛変嬌鐢═ransactionTemplate浜嬪姟綆$悊
錛?錛夌洿鎺ヤ嬌鐢ㄤ竴涓狿latformTransactionManager瀹炵幇綾葷鐞嗕簨鍔°?/p>
涓ょ緙栫▼寮忕殑浜嬪姟閮戒笉闇瑕佷笌鐗瑰畾鐨勪簨鍔PI鑰﹀悎錛岀涓縐嶆洿絎﹀悎Spring妯℃澘寮忕殑緙栫▼妯″瀷錛屽洜姝ら氬父鎺ㄨ崘閲囩敤絎竴縐嶆柟寮忥紝絎簩縐嶉潪甯哥被浼間簬JTA鐨刄serTransaction鐨凙PI緙栫▼錛屽尯鍒槸鍑忓皯浜嗗紓甯稿鐞嗐?/p>
4錛屽0鏄庡紡浜嬪姟
Spring鐨勫0鏄庡紡浜嬪姟鏄氳繃闈㈠悜鍒囬潰錛圓OP錛夊疄鐜般?/p>
錛?錛変嬌鐢ㄥ0鏄庡紡浜嬪姟綆$悊
閫氬父錛岄氳繃TransactionPoxyFactoryBean涓虹洰鏍嘊ean鐢熸垚Spring浜嬪姟浠g悊銆傚綋bean瀹炰緥鐨勬柟娉曢渶瑕佷簨鍔$鐞嗘椂錛岄噰鐢═ransactionPoxyFactoryBean鏉ヨ嚜鐩爣bean鐢熸垚浜嬪姟浠g悊銆?span style="color: #ff0000">姣忎釜TransactionPoxyFactoryBean涓轟竴涓叿浣撶殑鐩爣bean鐢熸垚浠g悊瀵硅薄錛屼唬鐞嗗璞$殑鏂規硶鏀瑰啓浜嗙洰鏍嘼ean鐨勬柟娉曪紝灝辨槸鍦ㄧ洰鏍嘼ean鐨勬柟娉曟墽琛屼箣鍓嶅姞鍏ュ紑濮嬩簨鍔★紝鍦ㄧ洰鏍嘼ean鏂規硶緇撴潫涔嬪悗鎻愪氦浜嬪姟錛岄亣鍒版寚瀹氬紓甯稿洖婊氫簨鍔?/span>銆?/p>
瀹氫箟浜嬪姟浠g悊bean妯℃澘
錛?錛夋牴鎹瓸eanName鑷姩鍒涘緩浜嬪姟浠g悊
濡傛灉鍚屼竴涓簲鐢ㄤ腑鏈夊緢澶氱洰鏍嘼ean闇瑕佺敓鎴愪簨鍔′唬鐞嗭紝褰撶劧鍙互涓烘瘡涓洰鏍嘼ean棰濆閰嶇疆涓涓猅ransactionPoxyFactoryBean bean.榪欐牱鍋氱殑緙虹偣鏄紝閰嶇疆鏂囦歡鐩稿綋鑷冭偪鑰屼笖闅句互緇存姢錛屾鏃跺彲浠ヨ冭檻浣跨敤鑷姩浜嬪姟浠g悊銆傝嚜鍔ㄤ簨鍔′唬鐞嗙殑鎬濊礬鏄紝褰揂pplicationContext鍒濆鍖栧畬鎴愬悗錛岀敱涓婁笅鏂囦腑鐨勬煇涓猙ean"鍚庡鐞?姣忎釜鐩爣bean錛屼負榪欎簺鐩爣bean鐢熸垚浜嬪姟浠g悊銆?/p>
鑳戒負鐩爣bean鎵ц"鍚庡鐞?鐨刡ean蹇呴』瀹炵幇BeanFactoryPostProcessor鎺ュ彛錛孉pplicationContext瀹屾垚鍒濆鍖栧悗錛屼細鑷姩鍒濆鍖栨墍鏈夊疄鐜癇eanFactoryPostProcessor鎺ュ彛鐨刡ean錛屽茍涓旇瀹?span style="color: #ff0000">“鍚庡鐞?#8221;鍏朵粬bean.Spring鎻愪緵BeanFactoryPostProcessor鐨勫疄鐜扮被BeanNameAutoPoxyCreator錛?span style="color: #ff0000">BeanNameAutoPoxyCreator鍙互鐢ㄦ潵澶勭悊ApplicationContext涓叾浠朾ean錛屾柟娉曟槸閫氳繃鍚嶇О鏉ヨ瘑鍒紝騫朵笖鎶婁粬浠敤浜嬪姟浠g悊鍖呰璧鋒潵銆?span style="color: #ff0000">BeanNameAutoPoxyCreator鐢熸垚鐨勪簨鍔′唬鐞嗭紝鍜屼嬌鐢═ransactionPoxyFactoryBean鐢熸垚鐨勪簨鍔′唬鐞嗗熀鏈竴鑷淬?/p>
瀹氫箟浜嬪姟鎷︽埅bean
嬈¢厤緗叧閿湪涓や釜bean
TransactionInterceptor
BeanNameAutoProxyCreator
錛?錛夊熀浜庢敞閲婂紡浜嬪姟浠g悊閰嶇疆
褰撻噰鐢╔ML鎻忚堪閰嶇疆鍏冩暟鎹椂錛屽皢閫氳繃<bean/>鍏冪礌鐨刢lass灞炴ф潵鎸囧畾瀹炰緥鍖栧璞$殑綾誨瀷銆俢lass 灞炴?(瀵瑰簲BeanDefinition瀹炰緥鐨凜lass灞炴?閫氬父鏄繀欏葷殑(涓嶈繃涔熸湁涓ょ渚嬪鐨勬儏褰紝“浣跨敤瀹炰緥宸ュ巶鏂規硶瀹炰緥鍖?#8221;鍜?#8220;bean瀹氫箟鐨勭戶鎵?#8221;)銆俢lass灞炴т富瑕佹湁涓ょ鐢ㄩ旓細鍦ㄥぇ澶氭暟鎯呭喌涓嬶紝瀹瑰櫒灝嗙洿鎺ラ氳繃鍙嶅皠璋冪敤鎸囧畾綾葷殑鏋勯犲櫒鏉ュ垱寤篵ean(榪欐湁鐐圭瓑綾諱技浜庡湪Java浠g爜涓嬌鐢╪ew鎿嶄綔絎?錛涘湪鏋佸皯鏁版儏鍐典笅錛屽鍣ㄥ皢璋冪敤綾葷殑闈欐佸伐鍘傛柟娉曟潵鍒涘緩bean瀹炰緥錛宑lass灞炴у皢鐢ㄦ潵鎸囧畾瀹為檯鍏鋒湁闈欐佸伐鍘傛柟娉曠殑綾?鑷充簬璋冪敤闈欐佸伐鍘傛柟娉曞垱寤虹殑瀵硅薄綾誨瀷鏄綋鍓峜lass榪樻槸鍏朵粬鐨刢lass鍒欐棤鍏崇揣瑕?銆?/p>
2, 寤惰繜鍒濆鍖朾ean
ApplicationContext瀹炵幇鐨勯粯璁よ涓哄氨鏄湪鍚姩鏃跺皢鎵鏈塻ingleton bean鎻愬墠榪涜瀹炰緥鍖栥傛彁鍓嶅疄渚嬪寲鎰忓懗鐫浣滀負鍒濆鍖栬繃紼嬬殑涓閮ㄥ垎錛孉pplicationContext瀹炰緥浼氬垱寤哄茍閰嶇疆鎵鏈夌殑singleton bean銆傞氬父鎯呭喌涓嬭繖鏄歡濂戒簨錛屽洜涓鴻繖鏍峰湪閰嶇疆涓殑浠諱綍閿欒灝變細鍗沖埢琚彂鐜幫紙鍚﹀垯鐨勮瘽鍙兘瑕佽姳鍑犱釜灝忔椂鐢氳嚦鍑犲ぉ錛夈?/p>
鏈夋椂鍊欒繖縐嶉粯璁ゅ鐞嗗彲鑳藉茍涓嶆槸浣犳兂瑕佺殑銆傚鏋滀綘涓嶆兂璁╀竴涓猻ingleton bean鍦ˋpplicationContext瀹炵幇鍦ㄥ垵濮嬪寲鏃惰鎻愬墠瀹炰緥鍖栵紝閭d箞鍙互灝哹ean璁劇疆涓哄歡榪熷疄渚嬪寲銆備竴涓歡榪熷垵濮嬪寲bean灝嗗憡璇塈oC 瀹瑰櫒鏄湪鍚姩鏃惰繕鏄湪絎竴嬈¤鐢ㄥ埌鏃跺疄渚嬪寲銆?/p>
鍦╔ML閰嶇疆鏂囦歡涓紝寤惰繜鍒濆鍖栧皢閫氳繃<bean/>鍏冪礌涓殑lazy-init灞炴ф潵榪涜鎺у埗銆備緥濡傦細
<bean id="lazy" class="com.foo.ExpensiveToCreateBean" lazy-init="true">
<!-- various properties here... -->
</bean>
<bean name="not.lazy" class="com.foo.AnotherBean">
<!-- various properties here... -->
</bean>
褰揂pplicationContext瀹炵幇鍔犺澆涓婅堪閰嶇疆鏃訛紝璁劇疆涓簂azy鐨刡ean灝嗕笉浼氬湪ApplicationContext鍚姩鏃舵彁鍓嶈瀹炰緥鍖栵紝鑰宯ot.lazy鍗翠細琚彁鍓嶅疄渚嬪寲銆?/p>
闇瑕佽鏄庣殑鏄紝濡傛灉涓涓猙ean琚緗負寤惰繜鍒濆鍖栵紝鑰屽彟涓涓潪寤惰繜鍒濆鍖栫殑singleton bean渚濊禆浜庡畠錛岄偅涔堝綋ApplicationContext鎻愬墠瀹炰緥鍖杝ingleton bean鏃訛紝瀹冨繀欏諱篃紜繚鎵鏈変笂榪皊ingleton 渚濊禆bean涔熻棰勫厛鍒濆鍖栵紝褰撶劧涔熷寘鎷緗負寤惰繜瀹炰緥鍖栫殑bean銆傚洜姝わ紝濡傛灉Ioc瀹瑰櫒鍦ㄥ惎鍔ㄧ殑鏃跺欏垱寤轟簡閭d簺璁劇疆涓哄歡榪熷疄渚嬪寲鐨刡ean鐨勫疄渚嬶紝浣犱篃涓嶈瑙夊緱濂囨紝鍥犱負閭d簺寤惰繜鍒濆鍖栫殑bean鍙兘鍦ㄩ厤緗殑鏌愪釜鍦版柟琚敞鍏ュ埌浜嗕竴涓潪寤惰繜鍒濆鍖杝ingleton bean閲岄潰銆?/p>
鍦ㄥ鍣ㄥ眰嬈′腑閫氳繃鍦?lt;beans/>鍏冪礌涓婁嬌鐢?default-lazy-init'灞炴ф潵鎺у埗寤惰繜鍒濆鍖栦篃鏄彲鑳界殑銆傚涓嬮潰鐨勯厤緗細
<beans default-lazy-init="true">
<!-- no beans will be eagerly pre-instantiated... -->
</beans>
3,鑷姩瑁呴厤錛坅utowire錛夊崗浣滆?/span>
Spring IoC瀹瑰櫒鍙互鑷姩瑁呴厤錛坅utowire錛夌浉浜掑崗浣渂ean涔嬮棿鐨勫叧鑱斿叧緋匯傚洜姝わ紝濡傛灉鍙兘鐨勮瘽錛屽彲浠ヨ嚜鍔ㄨSpring閫氳繃媯鏌eanFactory涓殑鍐呭錛屾潵鏇挎垜浠寚瀹歜ean鐨勫崗浣滆咃紙鍏朵粬琚緷璧栫殑bean錛夈傜敱浜巃utowire鍙互閽堝鍗曚釜bean榪涜璁劇疆錛屽洜姝ゅ彲浠ヨ鏈変簺bean浣跨敤autowire錛屾湁浜沚ean涓嶉噰鐢ㄣ俛utowire鐨勬柟渚夸箣澶勫湪鍑忓皯鎴栬呮秷闄ゅ睘鎬ф垨鏋勯犲櫒鍙傛暟鐨勮緗紝榪欐牱鍙互緇欐垜浠殑閰嶇疆鏂囦歡鍑忓噺鑲ワ紒[2] 鍦▁ml閰嶇疆鏂囦歡涓紝autowire涓鍏辨湁浜旂綾誨瀷錛屽彲浠ュ湪<bean/>鍏冪礌涓嬌鐢╝utowire灞炴ф寚瀹?
Table 3.2. Autowiring modes
妯″紡 璇存槑
no 涓嶄嬌鐢ㄨ嚜鍔ㄨ閰嶃傚繀欏婚氳繃ref鍏冪礌鎸囧畾渚濊禆錛岃繖鏄粯璁よ緗傜敱浜庢樉寮忔寚瀹氬崗浣滆呭彲浠ヤ嬌閰嶇疆鏇寸伒媧匯佹洿娓呮櫚錛屽洜姝ゅ浜庤緝澶х殑閮ㄧ講閰嶇疆錛屾帹鑽愰噰鐢ㄨ璁劇疆銆傝屼笖鍦ㄦ煇縐嶇▼搴︿笂錛屽畠涔熸槸緋葷粺鏋舵瀯鐨勪竴縐嶆枃妗e艦寮忋?br />
byName 鏍規嵁灞炴у悕鑷姩瑁呴厤銆傛閫夐」灝嗘鏌ュ鍣ㄥ茍鏍規嵁鍚嶅瓧鏌ユ壘涓庡睘鎬у畬鍏ㄤ竴鑷寸殑bean錛屽茍灝嗗叾涓庡睘鎬ц嚜鍔ㄨ閰嶃備緥濡傦紝鍦╞ean瀹氫箟涓皢autowire璁劇疆涓篵y name錛岃岃bean鍖呭惈master灞炴э紙鍚屾椂鎻愪緵setMaster(..)鏂規硶錛夛紝Spring灝變細鏌ユ壘鍚嶄負master鐨刡ean瀹氫箟錛屽茍鐢ㄥ畠鏉ヨ閰嶇粰master灞炴с?br />
byType 濡傛灉瀹瑰櫒涓瓨鍦ㄤ竴涓笌鎸囧畾灞炴х被鍨嬬浉鍚岀殑bean錛岄偅涔堝皢涓庤灞炴ц嚜鍔ㄨ閰嶃傚鏋滃瓨鍦ㄥ涓綾誨瀷鐨刡ean錛岄偅涔堝皢浼氭姏鍑哄紓甯革紝騫舵寚鍑轟笉鑳戒嬌鐢╞yType鏂瑰紡榪涜鑷姩瑁呴厤銆傝嫢娌℃湁鎵懼埌鐩稿尮閰嶇殑bean錛屽垯浠涔堜簨閮戒笉鍙戠敓錛屽睘鎬т篃涓嶄細琚緗傚鏋滀綘涓嶅笇鏈涜繖鏍鳳紝閭d箞鍙互閫氳繃璁劇疆dependency-check="objects"璁㏒pring鎶涘嚭寮傚父銆?br />
constructor 涓巄yType鐨勬柟寮忕被浼鹼紝涓嶅悓涔嬪鍦ㄤ簬瀹冨簲鐢ㄤ簬鏋勯犲櫒鍙傛暟銆傚鏋滃湪瀹瑰櫒涓病鏈夋壘鍒頒笌鏋勯犲櫒鍙傛暟綾誨瀷涓鑷寸殑bean錛岄偅涔堝皢浼氭姏鍑哄紓甯搞?br />
autodetect 閫氳繃bean綾葷殑鑷渷鏈哄埗錛坕ntrospection錛夋潵鍐沖畾鏄嬌鐢╟onstructor榪樻槸byType鏂瑰紡榪涜鑷姩瑁呴厤銆傚鏋滃彂鐜伴粯璁ょ殑鏋勯犲櫒錛岄偅涔堝皢浣跨敤byType鏂瑰紡銆?br />
濡傛灉鐩存帴浣跨敤property鍜宑onstructor-arg娉ㄥ叆渚濊禆鐨勮瘽錛岄偅涔堝皢鎬繪槸瑕嗙洊鑷姩瑁呴厤銆傝屼笖鐩墠涔熶笉鏀寔綆鍗曠被鍨嬬殑鑷姩瑁呴厤錛岃繖閲屾墍璇寸殑綆鍗曠被鍨嬪寘鎷熀鏈被鍨嬨丼tring銆丆lass浠ュ強綆鍗曠被鍨嬬殑鏁扮粍錛堣繖涓鐐瑰凡緇忚璁捐錛屽皢鑰冭檻浣滀負涓涓姛鑳芥彁渚涳級銆傝嚜鍔ㄨ閰嶈繕鍙互涓庝緷璧栨鏌ョ粨鍚堜嬌鐢紝榪欐牱渚濊禆媯鏌ュ皢鍦ㄨ嚜鍔ㄨ閰嶅畬鎴愪箣鍚庤鎵ц銆?/p>
鐞嗚В鑷姩瑁呴厤鐨勪紭緙虹偣鏄緢閲嶈鐨勩傚叾涓紭鐐瑰寘鎷細
鑷姩瑁呴厤鑳芥樉钁楀噺灝戦厤緗殑鏁伴噺銆備笉榪囷紝閲囩敤bean妯℃澘錛堣榪欓噷錛変篃鍙互杈懼埌鍚屾牱鐨勭洰鐨勩?/p>
鑷姩瑁呴厤鍙互浣塊厤緗笌java浠g爜鍚屾鏇存柊銆備緥濡傦紝濡傛灉浣犻渶瑕佺粰涓涓猨ava綾誨鍔犱竴涓緷璧栵紝閭d箞璇ヤ緷璧栧皢琚嚜鍔ㄥ疄鐜拌屼笉闇瑕佷慨鏀歸厤緗傚洜姝ゅ己鐑堟帹鑽愬湪寮鍙戣繃紼嬩腑閲囩敤鑷姩瑁呴厤錛岃屽湪緋葷粺瓚嬩簬紼沖畾鐨勬椂鍊欐敼涓烘樉寮忚閰嶇殑鏂瑰紡銆?/p>
鑷姩瑁呴厤鐨勪竴浜涚己鐐癸細
灝界鑷姩瑁呴厤姣旀樉寮忚閰嶆洿紲炲錛屼絾鏄紝姝e涓婇潰鎵鎻愬埌鐨勶紝Spring浼氬敖閲忛伩鍏嶅湪瑁呴厤涓嶆槑紜殑鏃跺欒繘琛岀寽嫻嬶紝鍥犱負瑁呴厤涓嶆槑紜彲鑳藉嚭鐜伴毦浠ラ鏂欑殑緇撴灉錛岃屼笖Spring鎵綆$悊鐨勫璞′箣闂寸殑鍏寵仈鍏崇郴涔熶笉鍐嶈兘娓呮櫚鐨勮繘琛屾枃妗e寲銆?/p>
瀵逛簬閭d簺鏍規嵁Spring閰嶇疆鏂囦歡鐢熸垚鏂囨。鐨勫伐鍏鋒潵璇達紝鑷姩瑁呴厤灝嗕細浣胯繖浜涘伐鍏鋒病娉曠敓鎴愪緷璧栦俊鎭?/p>
濡傛灉閲囩敤by type鏂瑰紡鑷姩瑁呴厤錛岄偅涔堝鍣ㄤ腑綾誨瀷涓庤嚜鍔ㄨ閰峛ean鐨勫睘鎬ф垨鑰呮瀯閫犲嚱鏁板弬鏁扮被鍨嬩竴鑷寸殑bean鍙兘鏈変竴涓紝濡傛灉閰嶇疆鍙兘瀛樺湪澶氫釜榪欐牱鐨刡ean錛岄偅涔堝氨瑕佽冭檻閲囩敤鏄懼紡瑁呴厤浜嗐?/p>
灝界浣跨敤autowire娌℃湁瀵歸敊涔嬪垎錛屼絾鏄兘鍦ㄤ竴涓」鐩腑淇濇寔涓瀹氱▼搴︾殑涓鑷存ф槸鏈濂界殑鍋氭硶銆備緥濡傦紝閫氬父鎯呭喌涓嬪鏋滄病鏈変嬌鐢ㄨ嚜鍔ㄨ閰嶏紝閭d箞浠呰嚜鍔ㄨ閰嶄竴涓垨涓や釜bean瀹氫箟鍙兘浼氬紩璧峰紑鍙戣呯殑娣鋒穯銆?/p>
搴旇娉ㄦ剰鐨勬槸錛屽嵆浣垮崟渚嬩笌鍘熷瀷浣滅敤鍩焍eans鐨勫熀鏈紙鍐呭湪錛夊疄鐜板彂鐢熶簡鍙樺寲錛屼笂榪板彉鍖栧鏈緇堢敤鎴鋒潵璇存槸閫忔槑鐨?..鐜版湁鐨勯厤緗笉闇瑕佹敼鍙樻垨鏀懼純銆?/p>
濡備綍浣跨敤spring鐨勪綔鐢ㄥ煙錛?
|
1銆乻ingleton浣滅敤鍩?/strong>
褰撲竴涓猙ean鐨勪綔鐢ㄥ煙璁劇疆涓簊ingleton錛岄偅涔圫pring IOC瀹瑰櫒涓彧浼氬瓨鍦ㄤ竴涓叡浜殑bean瀹炰緥錛屽茍涓旀墍鏈夊bean鐨勮姹傦紝鍙id涓庤bean瀹氫箟鐩稿尮閰嶏紝鍒欏彧浼氳繑鍥瀊ean鐨勫悓涓瀹炰緥銆傛崲璦涔嬶紝褰撴妸涓涓猙ean瀹氫箟璁劇疆涓簊ingleton浣滅敤鍩熸椂錛孲pring IOC瀹瑰櫒鍙細鍒涘緩璇ean瀹氫箟鐨勫敮涓瀹炰緥銆傝繖涓崟涓瀹炰緥浼氳瀛樺偍鍒板崟渚嬬紦瀛橈紙singleton cache錛変腑錛屽茍涓旀墍鏈夐拡瀵硅bean鐨勫悗緇姹傚拰寮曠敤閮藉皢榪斿洖琚紦瀛樼殑瀵硅薄瀹炰緥錛岃繖閲岃娉ㄦ剰鐨勬槸singleton浣滅敤鍩熷拰GOF璁捐妯″紡涓殑鍗曚緥鏄畬鍏ㄤ笉鍚岀殑錛屽崟渚嬭璁℃ā寮忚〃紺轟竴涓狢lassLoader涓彧鏈変竴涓猚lass瀛樺湪錛岃岃繖閲岀殑singleton鍒欒〃紺轟竴涓鍣ㄥ搴斾竴涓猙ean錛屼篃灝辨槸璇村綋涓涓猙ean琚爣璇嗕負singleton鏃跺欙紝spring鐨処OC瀹瑰櫒涓彧浼氬瓨鍦ㄤ竴涓bean銆?/p>
閰嶇疆瀹炰緥錛?/p>
|
鎴栬?/p>
|
2銆乸rototype
prototype浣滅敤鍩熼儴緗茬殑bean錛屾瘡涓嬈¤姹傦紙灝嗗叾娉ㄥ叆鍒板彟涓涓猙ean涓紝鎴栬呬互紼嬪簭鐨勬柟寮忚皟鐢ㄥ鍣ㄧ殑getBean()鏂規硶錛夐兘浼氫駭鐢熶竴涓柊鐨刡ean瀹炰緥錛岀浉褰撲簬涓涓猲ew鐨勬搷浣滐紝瀵逛簬prototype浣滅敤鍩熺殑bean錛屾湁涓鐐歸潪甯擱噸瑕侊紝閭e氨鏄疭pring涓嶈兘瀵逛竴涓猵rototype bean鐨勬暣涓敓鍛藉懆鏈熻礋璐o紝瀹瑰櫒鍦ㄥ垵濮嬪寲銆侀厤緗佽楗版垨鑰呮槸瑁呴厤瀹屼竴涓猵rototype瀹炰緥鍚庯紝灝嗗畠浜ょ粰瀹㈡埛绔紝闅忓悗灝卞璇rototype瀹炰緥涓嶉椈涓嶉棶浜嗐備笉綆′綍縐嶄綔鐢ㄥ煙錛屽鍣ㄩ兘浼氳皟鐢ㄦ墍鏈夊璞$殑鍒濆鍖栫敓鍛藉懆鏈熷洖璋冩柟娉曪紝鑰屽prototype鑰岃█錛屼換浣曢厤緗ソ鐨勬瀽鏋勭敓鍛藉懆鏈熷洖璋冩柟娉曢兘灝嗕笉浼氳璋冪敤銆傛竻闄rototype浣滅敤鍩熺殑瀵硅薄騫墮噴鏀句換浣昿rototype bean鎵鎸佹湁鐨勬槀璐佃祫婧愶紝閮芥槸瀹㈡埛绔唬鐮佺殑鑱岃矗銆傦紙璁㏒pring瀹瑰櫒閲婃斁琚玸ingleton浣滅敤鍩焍ean鍗犵敤璧勬簮鐨勪竴縐嶅彲琛屾柟寮忔槸錛岄氳繃浣跨敤bean鐨勫悗緗鐞嗗櫒錛岃澶勭悊鍣ㄦ寔鏈夎琚竻闄ょ殑bean鐨勫紩鐢ㄣ傦級
閰嶇疆瀹炰緥錛?/p>
|
鎴栬?/p>
|
request琛ㄧず璇ラ拡瀵規瘡涓嬈TTP璇鋒眰閮戒細浜х敓涓涓柊鐨刡ean錛屽悓鏃惰bean浠呭湪褰撳墠HTTP request鍐呮湁鏁堬紝閰嶇疆瀹炰緥錛?/p>
request銆乻ession銆乬lobal session浣跨敤鐨勬椂鍊欙紝棣栧厛瑕佸湪鍒濆鍖杦eb鐨剋eb.xml涓仛濡備笅閰嶇疆錛?/p>
濡傛灉浣犱嬌鐢ㄧ殑鏄疭ervlet 2.4鍙婁互涓婄殑web瀹瑰櫒錛岄偅涔堜綘浠呴渶瑕佸湪web搴旂敤鐨刋ML澹版槑鏂囦歡web.xml涓鍔犱笅榪癈ontextListener鍗沖彲錛?/p>
|
濡傛灉鏄疭ervlet2.4浠ュ墠鐨剋eb瀹瑰櫒,閭d箞浣犺浣跨敤涓涓猨avax.servlet.Filter鐨勫疄鐜幫細
|
鎺ョ潃鏃㈠彲浠ラ厤緗産ean鐨勪綔鐢ㄥ煙浜嗭細
|
4銆乻ession
session浣滅敤鍩熻〃紺鴻閽堝姣忎竴嬈TTP璇鋒眰閮戒細浜х敓涓涓柊鐨刡ean錛屽悓鏃惰bean浠呭湪褰撳墠HTTP session鍐呮湁鏁堬紝閰嶇疆瀹炰緥錛?/p>
閰嶇疆瀹炰緥錛?/p>
鍜宺equest閰嶇疆瀹炰緥鐨勫墠鎻愪竴鏍鳳紝閰嶇疆濂絯eb鍚姩鏂囦歡灝卞彲浠ュ涓嬮厤緗細
|
5銆乬lobal session
global session浣滅敤鍩熺被浼間簬鏍囧噯鐨凥TTP Session浣滅敤鍩燂紝涓嶈繃瀹冧粎浠呭湪鍩轟簬portlet鐨剋eb搴旂敤涓墠鏈夋剰涔夈侾ortlet瑙勮寖瀹氫箟浜嗗叏灞Session鐨勬蹇碉紝瀹冭鎵鏈夋瀯鎴愭煇涓猵ortlet web搴旂敤鐨勫悇縐嶄笉鍚岀殑portlet鎵鍏變韓銆傚湪global session浣滅敤鍩熶腑瀹氫箟鐨刡ean琚檺瀹氫簬鍏ㄥ眬portlet Session鐨勭敓鍛藉懆鏈熻寖鍥村唴銆傚鏋滀綘鍦╳eb涓嬌鐢╣lobal session浣滅敤鍩熸潵鏍囪瘑bean錛岄偅涔堬紝web浼氳嚜鍔ㄥ綋鎴恠ession綾誨瀷鏉ヤ嬌鐢ㄣ?/p>
閰嶇疆瀹炰緥錛?/p>
鍜宺equest閰嶇疆瀹炰緥鐨勫墠鎻愪竴鏍鳳紝閰嶇疆濂絯eb鍚姩鏂囦歡灝卞彲浠ュ涓嬮厤緗細
|
6銆佽嚜瀹氫箟bean瑁呴厤浣滅敤鍩?/strong>
鍦╯pring 2.0涓綔鐢ㄥ煙鏄彲浠ヤ換鎰忔墿灞曠殑錛屼綘鍙互鑷畾涔変綔鐢ㄥ煙錛岀敋鑷充綘涔熷彲浠ラ噸鏂板畾涔夊凡鏈夌殑浣滅敤鍩燂紙浣嗘槸浣犱笉鑳借鐩杝ingleton鍜宲rototype錛夛紝spring鐨勪綔鐢ㄥ煙鐢辨帴鍙rg.springframework.beans.factory.config.Scope鏉ュ畾涔夛紝鑷畾涔夎嚜宸辯殑浣滅敤鍩熷彧瑕佸疄鐜拌鎺ュ彛鍗沖彲錛屼笅闈㈢粰涓疄渚嬶細
鎴戜滑寤虹珛涓涓嚎紼嬬殑scope錛岃scope鍦ㄨ〃紺轟竴涓嚎紼嬩腑鏈夋晥錛屼唬鐮佸涓嬶細
|