锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲成在人线电影天堂色,亚洲欧洲∨国产一区二区三区,久久久久亚洲av无码专区http://www.tkk7.com/keweibo/category/25072.html涓涓? Java 澶氳兘 Delphi,Powerbuilder ... zh-cnFri, 14 Oct 2011 16:06:59 GMTFri, 14 Oct 2011 16:06:59 GMT60[杞琞Spring鍔犺澆resource鏃禼lasspath*:涓巆lasspath:鐨勫尯鍒?http://www.tkk7.com/keweibo/articles/361260.htmlKeKeFri, 14 Oct 2011 03:58:00 GMThttp://www.tkk7.com/keweibo/articles/361260.htmlhttp://www.tkk7.com/keweibo/comments/361260.htmlhttp://www.tkk7.com/keweibo/articles/361260.html#Feedback0http://www.tkk7.com/keweibo/comments/commentRss/361260.htmlhttp://www.tkk7.com/keweibo/services/trackbacks/361260.html

Spring鍙互閫氳繃鎸囧畾classpath*:涓巆lasspath:鍓嶇紑鍔犺礬寰勭殑鏂瑰紡浠巆lasspath鍔犺澆鏂囦歡,濡俠ean鐨勫畾涔夋枃浠?classpath*:鐨勫嚭鐜版槸涓轟簡浠庡涓猨ar鏂囦歡涓姞杞界浉鍚岀殑鏂囦歡.classpath:鍙兘鍔犺澆鎵懼埌鐨勭涓涓枃浠?

姣斿 resource1.jar涓殑package 'com.test.rs' 鏈変竴涓?'jarAppcontext.xml' 鏂囦歡,鍐呭濡備笅:

<bean name="ProcessorImplA" class="com.test.spring.di.ProcessorImplA" />

resource2.jar涓殑package 'com.test.rs' 涔熸湁涓涓?'jarAppcontext.xml' 鏂囦歡,鍐呭濡備笅:

<bean id="ProcessorImplB" class="com.test.spring.di.ProcessorImplB" />

 

閫氳繃浣跨敤涓嬮潰鐨勪唬鐮佸垯鍙互灝嗕袱涓猨ar鍖呬腑鐨勬枃浠墮兘鍔犺澆榪涙潵

ApplicationContext ctx = new ClassPathXmlApplicationContext(
                "classpath*:com/test/rs/jarAppcontext.xml");

 

鑰屽鏋滃啓鎴愪笅闈㈢殑浠g爜,灝卞彧鑳芥壘鍒板叾涓殑涓涓獂ml鏂囦歡(欏哄簭鍙栧喅浜巎ar鍖呯殑鍔犺澆欏哄簭)

ApplicationContext ctx = new ClassPathXmlApplicationContext(
                "classpath:com/test/rs/jarAppcontext.xml");

 

classpath*:鐨勪嬌鐢ㄦ槸涓轟簡澶氫釜component(鏈緇堝彂甯冩垚涓嶅悓鐨刯ar鍖?騫惰寮鍙?鍚勮嚜鐨刡ean瀹氫箟鏂囦歡鎸夌収涓瀹氱殑瑙勫垯:package+filename,鑰屼嬌鐢ㄨ繖浜沜omponent鐨勮皟鐢ㄨ呭彲浠ユ妸榪欎簺鏂囦歡閮藉姞杞借繘鏉?

 

classpath*:鐨勫姞杞戒嬌鐢ㄤ簡classloader鐨?getResources() 鏂規硶,濡傛灉鏄湪涓嶅悓鐨凧2EE鏈嶅姟鍣ㄤ笂榪愯,鐢變簬搴旂敤鏈嶅姟鍣ㄦ彁渚涜嚜宸辯殑classloader瀹炵幇錛屽畠浠湪澶勭悊jar鏂囦歡鏃剁殑琛屼負涔熻浼氭湁鎵涓嶅悓銆? 瑕佹祴璇?classpath*: 鏄惁鏈夋晥錛屽彲浠ョ敤classloader浠巆lasspath涓殑jar鏂囦歡閲屽姞杞芥枃浠舵潵榪涜嫻嬭瘯錛? getClass().getClassLoader().getResources("<someFileInsideTheJar>") 銆?涓婇潰鐨勪緥瀛愭槸鍦╯un鐨刯re涓繍琛岀殑鐘舵?

 

鏉ヨ嚜錛?a target="_blank">http://blog.csdn.net/kkdelta/article/details/5507799




Ke 2011-10-14 11:58 鍙戣〃璇勮
]]>
struts2 + spring, 浣跨敤session綃勫湇鐨凚ean鐨勯厤緗簨闋?/title><link>http://www.tkk7.com/keweibo/articles/358063.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Tue, 06 Sep 2011 02:22:00 GMT</pubDate><guid>http://www.tkk7.com/keweibo/articles/358063.html</guid><wfw:comment>http://www.tkk7.com/keweibo/comments/358063.html</wfw:comment><comments>http://www.tkk7.com/keweibo/articles/358063.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/keweibo/comments/commentRss/358063.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/keweibo/services/trackbacks/358063.html</trackback:ping><description><![CDATA[<div>鐣板父淇℃伅:<br />Scope 'session' is not active for the current thread; consider defining a scoped proxy for this bean if you intend to refer to it from a singleton; nested exception is java.lang.IllegalStateException: No thread-bound request found: Are you referring to request attributes outside of an actual web request, or processing a request outside of the originally receiving thread? If you are actually operating within a web request and still receive this message, your code is probably running outside of DispatcherServlet/DispatcherPortlet: In this case, use RequestContextListener or RequestContextFilter to expose the current request.</div><br />瑙f焙鏂規硶:<br /><br />1. 鍦╳eb.xml鏂囦歡涓坊鍔爈istener<br /><br /><div><listener><br />        <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class><br /></listener><br /></div>2. 鐩告噳鐨剆pring bean閰嶇疆涓噳鍔犲叆<strong><span style="color: red;"><aop:scoped-proxy/></span></strong>姝よ浠g⒓<br /><br /><div><bean id="userAction" class="org.gecs.mes.common.action.UserAction" autowire="byName" <strong><span style="color: red;">scope="session"></span></strong><br />       <strong><span style="color: red;"> <aop:scoped-proxy/></span></strong><br /></bean><br /><br /></div><img src ="http://www.tkk7.com/keweibo/aggbug/358063.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/keweibo/" target="_blank">Ke</a> 2011-09-06 10:22 <a href="http://www.tkk7.com/keweibo/articles/358063.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>spring娉ㄨВ鍏ラ棬(杞?http://www.tkk7.com/keweibo/articles/295152.htmlKeKeTue, 15 Sep 2009 07:20:00 GMThttp://www.tkk7.com/keweibo/articles/295152.htmlhttp://www.tkk7.com/keweibo/comments/295152.htmlhttp://www.tkk7.com/keweibo/articles/295152.html#Feedback0http://www.tkk7.com/keweibo/comments/commentRss/295152.htmlhttp://www.tkk7.com/keweibo/services/trackbacks/295152.html

杞夎嚜錛歨ttp://blog.csdn.net/huxin1/archive/2008/12/31/3669583.aspx
document.body.oncopy = function() { if (window.clipboardData) { setTimeout(function() { var text = clipboardData.getData("text"); if (text && text.length>300) { text = text + "\r\n\n鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛? + location.href; clipboardData.setData("text", text); } }, 100); } } 1. 浣跨敤Spring娉ㄨВ鏉ユ敞鍏ュ睘鎬?
1.1. 浣跨敤娉ㄨВ浠ュ墠鎴戜滑鏄庢牱娉ㄥ叆灞炴х殑
綾葷殑瀹炵幇錛?
  1. public class UserManagerImpl implements UserManager {   
  2.     private UserDao userDao;   
  3.     public void setUserDao(UserDao userDao) {   
  4.         this.userDao = userDao;   
  5.     }   
  6.     ...   
  7. }  

閰嶇疆鏂囦歡錛?
Java浠g爜
  1. <bean id="userManagerImpl" class="com.kedacom.spring.annotation.service.UserManagerImpl">   
  2.     <property name="userDao" ref="userDao" />   
  3. </bean>   
  4. <bean id="userDao" class="com.kedacom.spring.annotation.persistence.UserDaoImpl">   
  5.     <property name="sessionFactory" ref="mySessionFactory" />   
  6. </bean>  


1.2. 寮曞叆@Autowired娉ㄨВ錛堜笉鎺ㄨ崘浣跨敤錛屽緩璁嬌鐢ˊResource錛?
綾葷殑瀹炵幇錛堝鎴愬憳鍙橀噺榪涜鏍囨敞錛?
Java浠g爜 澶嶅埗浠g爜
  1. public class UserManagerImpl implements UserManager {   
  2.     @Autowired  
  3.     private UserDao userDao;   
  4.     ...   
  5. }  

鎴栬咃紙瀵規柟娉曡繘琛屾爣娉級
Java浠g爜 澶嶅埗浠g爜
  1. public class UserManagerImpl implements UserManager {   
  2.     private UserDao userDao;   
  3.     @Autowired  
  4.     public void setUserDao(UserDao userDao) {   
  5.         this.userDao = userDao;   
  6.     }   
  7.     ...   
  8. }  

閰嶇疆鏂囦歡
Java浠g爜 澶嶅埗浠g爜
  1. <bean id="userManagerImpl" class="com.kedacom.spring.annotation.service.UserManagerImpl" />   
  2. <bean id="userDao" class="com.kedacom.spring.annotation.persistence.UserDaoImpl">   
  3.     <property name="sessionFactory" ref="mySessionFactory" />   
  4. </bean>  

@Autowired鍙互瀵規垚鍛樺彉閲忋佹柟娉曞拰鏋勯犲嚱鏁拌繘琛屾爣娉紝鏉ュ畬鎴愯嚜鍔ㄨ閰嶇殑宸ヤ綔銆備互涓婁袱縐嶄笉鍚屽疄鐜版柟寮? 涓紝@Autowired鐨勬爣娉ㄤ綅緗笉鍚岋紝瀹冧滑閮戒細鍦⊿pring鍦ㄥ垵濮嬪寲userManagerImpl榪欎釜bean鏃訛紝鑷姩瑁呴厤userDao榪欎釜灞? 鎬э紝鍖哄埆鏄細絎竴縐嶅疄鐜頒腑錛孲pring浼氱洿鎺ュ皢UserDao綾誨瀷鐨勫敮涓涓涓猙ean璧嬪肩粰userDao榪欎釜鎴愬憳鍙橀噺錛涚浜岀瀹炵幇涓紝Spring浼? 璋冪敤setUserDao鏂規硶鏉ュ皢UserDao綾誨瀷鐨勫敮涓涓涓猙ean瑁呴厤鍒皍serDao榪欎釜灞炴с?

1.3. 璁〡Autowired宸ヤ綔璧鋒潵
瑕佷嬌@Autowired鑳藉宸ヤ綔錛岃繕闇瑕佸湪閰嶇疆鏂囦歡涓姞鍏ヤ互涓嬩唬鐮?
Java浠g爜 澶嶅埗浠g爜
  1. <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" />  


1.4. @Qualifier
@Autowired鏄牴鎹被鍨嬭繘琛岃嚜鍔ㄨ閰嶇殑銆傚湪涓婇潰鐨勪緥瀛愪腑錛屽鏋滃綋 Spring涓婁笅鏂囦腑瀛樺湪涓嶆涓涓猆serDao綾誨瀷鐨刡ean鏃訛紝灝變細鎶涘嚭BeanCreationException寮傚父錛涘鏋淪pring涓婁笅鏂囦腑 涓嶅瓨鍦║serDao綾誨瀷鐨刡ean錛屼篃浼氭姏鍑築eanCreationException寮傚父銆傛垜浠彲浠ヤ嬌鐢ˊQualifier閰嶅悎 @Autowired鏉ヨВ鍐寵繖浜涢棶棰樸?
1. 鍙兘瀛樺湪澶氫釜UserDao瀹炰緥
Java浠g爜 澶嶅埗浠g爜
  1. @Autowired  
  2. public void setUserDao(@Qualifier("userDao") UserDao userDao) {   
  3.     this.userDao = userDao;   
  4. }  

榪欐牱錛孲pring浼氭壘鍒癷d涓簎serDao鐨刡ean榪涜瑁呴厤銆?
2. 鍙兘涓嶅瓨鍦║serDao瀹炰緥

Java浠g爜 澶嶅埗浠g爜
  1. @Autowired(required = false)   
  2. public void setUserDao(UserDao userDao) {   
  3.     this.userDao = userDao;   
  4. }  


1.5. @Resource錛圝SR-250鏍囧噯娉ㄨВ錛屾帹鑽愪嬌鐢ㄥ畠鏉ヤ唬鏇縎pring涓撴湁鐨凘Autowired娉ㄨВ錛?
Spring 涓嶄絾鏀寔鑷繁瀹氫箟鐨凘Autowired娉ㄨВ錛岃繕鏀寔鍑犱釜鐢盝SR-250瑙勮寖瀹氫箟鐨勬敞瑙o紝瀹冧滑鍒嗗埆鏄疈Resource銆丂PostConstruct浠ュ強@PreDestroy銆?
@Resource 鐨勪綔鐢ㄧ浉褰撲簬@Autowired錛屽彧涓嶈繃@Autowired鎸塨yType鑷姩娉ㄥ叆錛岃孈Resource榛樿鎸塨yName鑷姩娉ㄥ叆緗簡銆? @Resource鏈変袱涓睘鎬ф槸姣旇緝閲嶈鐨勶紝鍒嗗埆鏄痭ame鍜宼ype錛孲pring灝咢Resource娉ㄨВ鐨刵ame灞炴цВ鏋愪負bean鐨勫悕瀛楋紝鑰? type灞炴у垯瑙f瀽涓篵ean鐨勭被鍨嬨傛墍浠ュ鏋滀嬌鐢╪ame灞炴э紝鍒欎嬌鐢╞yName鐨勮嚜鍔ㄦ敞鍏ョ瓥鐣ワ紝鑰屼嬌鐢╰ype灞炴ф椂鍒欎嬌鐢╞yType鑷姩娉ㄥ叆絳? 鐣ャ傚鏋滄棦涓嶆寚瀹歯ame涔熶笉鎸囧畾type灞炴э紝榪欐椂灝嗛氳繃鍙嶅皠鏈哄埗浣跨敤byName鑷姩娉ㄥ叆絳栫暐銆?
@Resource瑁呴厤欏哄簭
  1. 濡傛灉鍚屾椂鎸囧畾浜唍ame鍜宼ype錛屽垯浠嶴pring涓婁笅鏂囦腑鎵懼埌鍞竴鍖歸厤鐨刡ean榪涜瑁呴厤錛屾壘涓嶅埌鍒欐姏鍑哄紓甯?
  2. 濡傛灉鎸囧畾浜唍ame錛屽垯浠庝笂涓嬫枃涓煡鎵懼悕縐幫紙id錛夊尮閰嶇殑bean榪涜瑁呴厤錛屾壘涓嶅埌鍒欐姏鍑哄紓甯?
  3. 濡傛灉鎸囧畾浜唗ype錛屽垯浠庝笂涓嬫枃涓壘鍒扮被鍨嬪尮閰嶇殑鍞竴bean榪涜瑁呴厤錛屾壘涓嶅埌鎴栬呮壘鍒板涓紝閮戒細鎶涘嚭寮傚父
  4. 濡傛灉鏃㈡病鏈夋寚瀹歯ame錛屽張娌℃湁鎸囧畾type錛屽垯鑷姩鎸夌収byName鏂瑰紡榪涜瑁呴厤錛堣2錛夛紱濡傛灉娌℃湁鍖歸厤錛屽垯鍥為涓轟竴涓師濮嬬被鍨嬶紙UserDao錛夎繘琛屽尮閰嶏紝濡傛灉鍖歸厤鍒欒嚜鍔ㄨ閰嶏紱


1.6. @PostConstruct錛圝SR-250錛?
鍦ㄦ柟娉曚笂鍔犱笂娉ㄨВ@PostConstruct錛岃繖涓柟娉曞氨浼氬湪Bean鍒濆鍖栦箣鍚庤Spring瀹瑰櫒鎵ц錛堟敞錛欱ean鍒濆鍖栧寘鎷紝瀹炰緥鍖朆ean錛屽茍瑁呴厤Bean鐨勫睘鎬э紙渚濊禆娉ㄥ叆錛夛級銆?
瀹冪殑涓涓吀鍨嬬殑搴旂敤鍦烘櫙鏄紝褰撲綘闇瑕佸線Bean閲屾敞鍏ヤ竴涓叾鐖剁被涓畾涔夌殑灞炴э紝鑰屼綘鍙堟棤娉曞鍐欑埗綾葷殑灞炴ф垨灞炴х殑setter鏂規硶鏃訛紝濡傦細
Java浠g爜 澶嶅埗浠g爜
  1. public class UserDaoImpl extends HibernateDaoSupport implements UserDao {   
  2.     private SessionFactory mySessionFacotry;   
  3.     @Resource  
  4.     public void setMySessionFacotry(SessionFactory sessionFacotry) {   
  5.         this.mySessionFacotry = sessionFacotry;   
  6.     }   
  7.     @PostConstruct  
  8.     public void injectSessionFactory() {   
  9.         super.setSessionFactory(mySessionFacotry);   
  10.     }   
  11.     ...   
  12. }  

榪欓噷閫氳繃@PostConstruct錛屼負UserDaoImpl鐨勭埗綾婚噷瀹氫箟鐨勪竴涓猻essionFactory縐佹湁灞炴э紝娉ㄥ叆浜? 鎴戜滑鑷繁瀹氫箟鐨剆essionFactory錛堢埗綾葷殑setSessionFactory鏂規硶涓篺inal錛屼笉鍙鍐欙級錛屼箣鍚庢垜浠氨鍙互閫氳繃璋冪敤 super.getSessionFactory()鏉ヨ闂灞炴т簡銆?

1.7. @PreDestroy錛圝SR-250錛?
鍦ㄦ柟娉曚笂鍔犱笂娉ㄨВ@PreDestroy錛岃繖涓柟娉曞氨浼氬湪Bean鍒濆鍖栦箣鍚庤Spring瀹瑰櫒鎵ц銆傜敱浜庢垜浠綋鍓嶈繕娌℃湁闇瑕佺敤鍒板畠鐨勫満鏅紝榪欓噷涓嶄笉鍘繪紨紺恒傚叾鐢ㄦ硶鍚孈PostConstruct銆?

1.8. 浣跨敤<context:annotation-config />綆鍖栭厤緗?
Spring2.1 娣誨姞浜嗕竴涓柊鐨刢ontext鐨凷chema鍛藉悕絀洪棿錛岃鍛藉悕絀洪棿瀵規敞閲婇┍鍔ㄣ佸睘鎬ф枃浠跺紩鍏ャ佸姞杞芥湡緇囧叆絳夊姛鑳芥彁渚涗簡渚挎嵎鐨勯厤緗傛垜浠煡閬撴敞閲婃湰韜槸涓嶄細 鍋氫換浣曚簨鎯呯殑錛屽畠浠呮彁渚涘厓鏁版嵁淇℃伅銆傝浣垮厓鏁版嵁淇℃伅鐪熸璧蜂綔鐢紝蹇呴』璁╄礋璐e鐞嗚繖浜涘厓鏁版嵁鐨勫鐞嗗櫒宸ヤ綔璧鋒潵銆?
AutowiredAnnotationBeanPostProcessor 鍜孋ommonAnnotationBeanPostProcessor灝辨槸澶勭悊榪欎簺娉ㄩ噴鍏冩暟鎹殑澶勭悊鍣ㄣ備絾鏄洿鎺ュ湪Spring閰嶇疆鏂囦歡涓畾涔夎繖浜? Bean鏄懼緱姣旇緝絎ㄦ嫏銆係pring涓烘垜浠彁渚涗簡涓縐嶆柟渚跨殑娉ㄥ唽榪欎簺BeanPostProcessor鐨勬柟寮忥紝榪欏氨 鏄?lt;context:annotation-config />錛?
Java浠g爜 澶嶅埗浠g爜
  1. <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"  
  2.     xsi:schemaLocation="http://www.springframework.org/schema/beans   
  3.     http://www.springframework.org/schema/beans/spring-beans-2.5.xsd   
  4.     http://www.springframework.org/schema/context   
  5.     http://www.springframework.org/schema/context/spring-context-2.5.xsd">   
  6.     <context:annotation-config />   
  7. </beans>  

<context:annotationconfig />灝嗛殣寮忓湴鍚慡pring瀹瑰櫒娉ㄥ唽AutowiredAnnotationBeanPostProcessor銆? CommonAnnotationBeanPostProcessor銆? PersistenceAnnotationBeanPostProcessor浠ュ強 RequiredAnnotationBeanPostProcessor榪?涓狟eanPostProcessor銆?

2. 浣跨敤Spring娉ㄨВ瀹屾垚Bean鐨勫畾涔?
浠ヤ笂鎴戜滑浠嬬粛浜嗛氳繃@Autowired鎴朄Resource鏉ュ疄鐜板湪Bean涓嚜鍔ㄦ敞鍏ョ殑鍔熻兘錛屼笅闈㈡垜浠皢浠嬬粛濡備綍娉ㄨВBean錛屼粠鑰屼粠XML閰嶇疆鏂囦歡涓畬鍏ㄧЩ闄ean瀹氫箟鐨勯厤緗?

2.1. @Component錛堜笉鎺ㄨ崘浣跨敤錛夈丂Repository銆丂Service銆丂Controller
鍙渶瑕佸湪瀵瑰簲鐨勭被涓婂姞涓婁竴涓狜Component娉ㄨВ錛屽氨灝嗚綾誨畾涔変負涓涓狟ean浜嗭細
Java浠g爜 澶嶅埗浠g爜
  1. @Component  
  2. public class UserDaoImpl extends HibernateDaoSupport implements UserDao {   
  3.     ...   
  4. }  

浣跨敤@Component娉ㄨВ瀹氫箟鐨凚ean錛岄粯璁ょ殑鍚嶇О錛坕d錛夋槸灝忓啓寮澶寸殑闈為檺瀹氱被鍚嶃傚榪欓噷瀹氫箟鐨凚ean鍚嶇О灝辨槸userDaoImpl銆備綘涔熷彲浠ユ寚瀹欱ean鐨勫悕縐幫細
@Component("userDao")
@Component 鏄墍鏈夊彈Spring綆$悊緇勪歡鐨勯氱敤褰㈠紡錛孲pring榪樻彁渚涗簡鏇村姞緇嗗寲鐨勬敞瑙e艦寮忥細@Repository銆丂Service銆? @Controller錛屽畠浠垎鍒搴斿瓨鍌ㄥ眰Bean錛屼笟鍔″眰Bean錛屽拰灞曠ず灞侭ean銆傜洰鍓嶇増鏈紙2.5錛変腑錛岃繖浜涙敞瑙d笌@Component鐨勮涔? 鏄竴鏍風殑錛屽畬鍏ㄩ氱敤錛屽湪Spring浠ュ悗鐨勭増鏈腑鍙兘浼氱粰瀹冧滑榪藉姞鏇村鐨勮涔夈傛墍浠ワ紝鎴戜滑鎺ㄨ崘浣跨敤@Repository銆丂Service銆? @Controller鏉ユ浛浠Component銆?

2.2. 浣跨敤<context:component-scan />璁〣ean瀹氫箟娉ㄨВ宸ヤ綔璧鋒潵
Java浠g爜 澶嶅埗浠g爜
  1. <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"  
  2.     xsi:schemaLocation="http://www.springframework.org/schema/beans   
  3.     http://www.springframework.org/schema/beans/spring-beans-2.5.xsd   
  4.     http://www.springframework.org/schema/context   
  5.     http://www.springframework.org/schema/context/spring-context-2.5.xsd">   
  6.     <context:component-scan base-package="com.kedacom.ksoa" />   
  7. </beans>  

榪欓噷錛屾墍鏈夐氳繃<bean>鍏冪礌瀹氫箟Bean鐨勯厤緗唴瀹瑰凡緇忚縐婚櫎錛屼粎闇瑕佹坊鍔犱竴 琛?lt;context:component-scan />閰嶇疆灝辮В鍐蟲墍鏈夐棶棰樹簡鈥斺擲pring XML閰嶇疆鏂囦歡寰楀埌浜嗘瀬鑷寸殑綆鍖栵紙褰撶劧閰嶇疆鍏冩暟鎹繕鏄渶瑕佺殑錛屽彧涓嶈繃浠ユ敞閲婂艦寮忓瓨鍦ㄧ艦浜嗭級銆?lt;context:component-scan />鐨刡ase-package灞炴ф寚瀹氫簡闇瑕佹壂鎻忕殑綾誨寘錛岀被鍖呭強鍏墮掑綊瀛愬寘涓墍鏈夌殑綾婚兘浼氳澶勭悊銆?
<context:component-scan />榪樺厑璁稿畾涔夎繃婊ゅ櫒灝嗗熀鍖呬笅鐨勬煇浜涚被綰沖叆鎴栨帓闄ゃ係pring鏀寔浠ヤ笅4縐嶇被鍨嬬殑榪囨護鏂瑰紡錛?
  • 榪囨護鍣ㄧ被鍨?琛ㄨ揪寮忚寖渚?璇存槑
  • 娉ㄨВ org.example.SomeAnnotation 灝嗘墍鏈変嬌鐢⊿omeAnnotation娉ㄨВ鐨勭被榪囨護鍑烘潵
  • 綾誨悕鎸囧畾 org.example.SomeClass 榪囨護鎸囧畾鐨勭被
  • 姝e垯琛ㄨ揪寮?com\.kedacom\.spring\.annotation\.web\..* 閫氳繃姝e垯琛ㄨ揪寮忚繃婊や竴浜涚被
  • AspectJ琛ㄨ揪寮?org.example..*Service+ 閫氳繃AspectJ琛ㄨ揪寮忚繃婊や竴浜涚被

浠ユ鍒欒〃杈懼紡涓轟緥錛屾垜鍒椾婦涓涓簲鐢ㄥ疄渚嬶細
Java浠g爜 澶嶅埗浠g爜
  1. <context:component-scan base-package="com.casheen.spring.annotation">   
  2.     <context:exclude-filter type="regex" expression="com\.casheen\.spring\.annotation\.web\..*" />   
  3. </context:component-scan>  

鍊煎緱娉ㄦ剰鐨勬槸<context:component-scan />閰嶇疆欏逛笉浣嗗惎鐢ㄤ簡瀵圭被鍖呰繘琛屾壂鎻忎互瀹炴柦娉ㄩ噴椹卞姩Bean瀹氫箟鐨勫姛鑳斤紝鍚屾椂榪樺惎鐢ㄤ簡娉ㄩ噴椹卞姩鑷姩娉ㄥ叆鐨勫姛鑳斤紙鍗寵繕闅愬紡鍦板湪鍐呴儴娉ㄥ唽浜? AutowiredAnnotationBeanPostProcessor鍜孋ommonAnnotationBeanPostProcessor錛夛紝 鍥犳褰撲嬌鐢?lt;context:component-scan />鍚庯紝灝卞彲浠ュ皢<context:annotation-config />縐婚櫎浜嗐?

2.3. 浣跨敤@Scope鏉ュ畾涔塀ean鐨勪綔鐢ㄨ寖鍥?
鍦ㄤ嬌鐢╔ML瀹氫箟Bean鏃訛紝鎴戜滑鍙兘榪橀渶瑕侀氳繃bean鐨剆cope灞炴ф潵瀹氫箟涓涓狟ean鐨勪綔鐢ㄨ寖鍥達紝鎴戜滑鍚屾牱鍙互閫氳繃@Scope娉ㄨВ鏉ュ畬鎴愯繖欏瑰伐浣滐細
Java浠g爜 澶嶅埗浠g爜
  1. @Scope("session")   
  2. @Component()   
  3. public class UserSessionBean implements Serializable {   
  4.     ...   
  5. }  


3. 鍙傝?
http://kingtai168.javaeye.com/blog/244002
http://www.javaeye.com/topic/244153
http://static.springframework.org/spring/docs/2.5.x/reference/beans.html#beans-annotation-config
http://static.springframework.org/spring/docs/2.5.x/reference/beans.html#beans-classpath-scanning



Ke 2009-09-15 15:20 鍙戣〃璇勮
]]>鐢⊿pring鐨凧dbcTemplate瀹炵幇鍒嗛〉鍔熻兘http://www.tkk7.com/keweibo/articles/194354.htmlKeKeSun, 20 Apr 2008 11:32:00 GMThttp://www.tkk7.com/keweibo/articles/194354.htmlhttp://www.tkk7.com/keweibo/comments/194354.htmlhttp://www.tkk7.com/keweibo/articles/194354.html#Feedback0http://www.tkk7.com/keweibo/comments/commentRss/194354.htmlhttp://www.tkk7.com/keweibo/services/trackbacks/194354.htmlOracle鏁版嵁搴擄紝浣跨敤浼垪ROWNUM鏉ュ疄鐜板垎欏點傚垎欏典唬鐮佸涓嬶細
銆銆
銆銆package com.deity.ranking.util;
        import java.util.List;
銆銆import org.springframework.jdbc.core.JdbcTemplate;
銆銆import org.springframework.jdbc.core.support.JdbcDaoSupport;
銆銆/** * 鍒嗛〉鍑芥暟 *銆
        * @author allenpan */
public class Pagination extends JdbcDaoSupport{
銆銆public static final int NUMBERS_PER_PAGE = 10;
銆銆//涓欏墊樉紺虹殑璁板綍鏁?br /> 銆銆private int numPerPage;
銆銆//璁板綍鎬繪暟
銆銆private int totalRows;
銆銆//鎬婚〉鏁?br /> 銆銆private int totalPages;
銆銆//褰撳墠欏電爜
銆銆private int currentPage;
銆銆//璧峰琛屾暟
銆銆private int startIndex;
銆銆//緇撴潫琛屾暟
銆銆private int lastIndex;
銆銆//緇撴灉闆嗗瓨鏀綥ist
銆銆private List resultList;
銆銆//JdbcTemplate jTemplate
銆銆private JdbcTemplate jTemplate;
銆銆/**
銆銆* 姣忛〉鏄劇ず10鏉¤褰曠殑鏋勯犲嚱鏁?浣跨敤璇ュ嚱鏁板繀欏誨厛緇橮agination璁劇疆currentPage錛宩Template鍒濆?br /> 銆銆* @param sql oracle璇彞
銆銆*/
銆銆public Pagination(String sql){
銆銆if(jTemplate == null){
銆銆throw new IllegalArgumentException("com.deity.ranking.util.Pagination.jTemplate is null,please initial it first. ");
銆銆}else if(sql.equals("")){
銆銆throw new IllegalArgumentException("com.deity.ranking.util.Pagination.sql is empty,please initial it first. ");
銆銆}
銆銆new Pagination(sql,currentPage,NUMBERS_PER_PAGE,jTemplate);
銆銆}
銆銆/**鍒嗛〉鏋勯犲嚱鏁?br /> 銆銆* @param sql 鏍規嵁浼犲叆鐨剆ql璇彞寰楀埌涓浜涘熀鏈垎欏典俊鎭?br /> 銆銆* @param currentPage 褰撳墠欏?br /> 銆銆* @param numPerPage 姣忛〉璁板綍鏁?br /> 銆銆* @param jTemplate JdbcTemplate瀹炰緥
銆銆*/
銆銆public Pagination(String sql,int currentPage,int numPerPage,JdbcTemplate jTemplate){
銆銆if(jTemplate == null){
銆銆throw new IllegalArgumentException("com.deity.ranking.util.Pagination.jTemplate is null,please initial it first. ");
銆銆}else if(sql == null || sql.equals("")){
銆銆throw new IllegalArgumentException("com.deity.ranking.util.Pagination.sql is empty,please initial it first. ");
銆銆}
銆銆//璁劇疆姣忛〉鏄劇ず璁板綍鏁?br /> 銆銆setNumPerPage(numPerPage);
銆銆//璁劇疆瑕佹樉紺虹殑欏墊暟
銆銆setCurrentPage(currentPage);
銆銆//璁$畻鎬昏褰曟暟
銆銆StringBuffer totalSQL = new StringBuffer(" SELECT count(*) FROM ( ");
銆銆totalSQL.append(sql);
銆銆totalSQL.append(" ) totalTable ");
銆銆//緇橨dbcTemplate璧嬪?br /> 銆銆setJdbcTemplate(jTemplate);
銆銆//鎬昏褰曟暟
銆銆setTotalRows(getJdbcTemplate().queryForInt(totalSQL.toString()));
銆銆//璁$畻鎬婚〉鏁?br /> 銆銆setTotalPages();
銆銆//璁$畻璧峰琛屾暟
銆銆setStartIndex();
銆銆//璁$畻緇撴潫琛屾暟
銆銆setLastIndex();
銆銆System.out.println("lastIndex="+lastIndex);//////////////////
銆銆//鏋勯爋racle鏁版嵁搴撶殑鍒嗛〉璇彞
銆銆StringBuffer paginationSQL = new StringBuffer(" SELECT * FROM ( ");
銆銆paginationSQL.append(" SELECT temp.* ,ROWNUM num FROM ( ");
銆銆paginationSQL.append(sql);
銆銆paginationSQL.append("銆) temp where ROWNUM <= " + lastIndex);
銆銆paginationSQL.append(" ) WHERE銆num > " + startIndex);
銆銆//瑁呭叆緇撴灉闆?br /> 銆銆setResultList(getJdbcTemplate().queryForList(paginationSQL.toString()));
銆銆}
銆銆/**
銆銆* @param args
銆銆*/
銆銆public static void main(String[] args) {
銆銆// TODO Auto-generated method stub銆銆銆銆}
銆銆public int getCurrentPage() {
銆銆return currentPage;
銆銆}
銆銆public void setCurrentPage(int currentPage) {
銆銆this.currentPage = currentPage;
銆銆}
銆銆public int getNumPerPage() {
銆銆return numPerPage;
銆銆}
銆銆public void setNumPerPage(int numPerPage) {
銆銆this.numPerPage = numPerPage;
銆銆}
銆銆public List getResultList() {
銆銆return resultList;銆銆銆銆}
銆銆public void setResultList(List resultList) {
銆銆this.resultList = resultList;
銆銆}
銆銆public int getTotalPages() {
銆銆return totalPages;
銆銆}
銆銆//璁$畻鎬婚〉鏁?br /> 銆銆public void setTotalPages() {
銆銆if(totalRows % numPerPage == 0){
銆銆this.totalPages = totalRows / numPerPage;
銆銆}else{
銆銆this.totalPages銆= (totalRows / numPerPage) + 1;
銆銆}
銆銆}
銆銆public int getTotalRows() {
銆銆return totalRows;
銆銆}
銆銆public void setTotalRows(int totalRows) {
銆銆this.totalRows = totalRows;
銆銆}
銆銆public int getStartIndex() {
銆銆return startIndex;
銆銆}
銆銆public void setStartIndex() {
銆銆this.startIndex = (currentPage - 1) * numPerPage;
銆銆}
銆銆public int getLastIndex() {
銆銆return lastIndex;
銆銆}
銆銆public JdbcTemplate getJTemplate() {
銆銆return jTemplate;
銆銆}
銆銆public void setJTemplate(JdbcTemplate template) {
銆銆jTemplate = template;
銆銆}
銆銆//璁$畻緇撴潫鏃跺欑殑绱㈠紩
銆銆public void setLastIndex() {
銆銆System.out.println("totalRows="+totalRows);///////////
銆銆System.out.println("numPerPage="+numPerPage);///////////
銆銆if( totalRows < numPerPage){
銆銆this.lastIndex = totalRows;
銆銆}else if((totalRows % numPerPage == 0) || (totalRows % numPerPage != 0 && currentPage < totalPages)){
銆銆this.lastIndex = currentPage * numPerPage;
銆銆}else if(totalRows % numPerPage != 0 && currentPage == totalPages){//鏈鍚庝竴欏?br /> 銆銆this.lastIndex = totalRows ;
銆銆}
銆銆}}鍦ㄦ垜鐨勪笟鍔¢昏緫浠g爜涓細
銆銆/**
銆銆* find season ranking list from DC
銆銆* @param areaId 閫夋墜鍖哄煙id
銆銆* @param rankDate 璧涘
銆銆* @param category 綾誨埆
銆銆* @param characterName 瑙掕壊鍚?br /> 銆銆* @return List
銆銆*/
銆銆public List findSeasonRankingList(Long areaId, int rankYear,int rankMonth,
銆銆Long categoryId,String characterName) {
銆銆//SQL璇彞
銆銆StringBuffer sql = new StringBuffer(" SELECT C.USERID userid,D.POSNAME posname,C.GAMEID gameid,C.AMOUNT amount,C.RANK rank FROM ");
銆銆//琛ㄣ銆銆銆銆銆銆銆銆銆銆銆sql.append(" (SELECT B.USERID USERID,");
銆銆sql.append(" B.POSID POSID,");
銆銆sql.append(" A.DISTRICT_CODE DISTRICTCODE,");
銆銆sql.append(" A.GAMEID GAMEID,");
銆銆sql.append(" AMOUNT AMOUNT,");
銆銆sql.append(" RANK RANK ");
銆銆sql.append(" FROM TB_FS_RANK A ");
銆銆sql.append(" LEFT JOIN TB_CHARACTER_INFO B ");
銆銆sql.append(" ON A.DISTRICT_CODE = B.DISTRICT_CODE ");
銆銆sql.append(" AND A.GAMEID = B.GAMEID ");
銆銆//闄勫姞鏉′歡
銆銆if(areaId != null && areaId.intValue() != 0){
銆銆sql.append(" and A.DISTRICT_CODE = " + areaId.intValue());
銆銆}
銆銆if( rankYear > 1970 && rankMonth > 0){
銆銆//hql.append(" and sas.id.dt >= to_date('" + rankYear + "-" + rankMonth + "-01 00:00:00'," + "YYYY-MM-DD HH24:MI:SS");
銆銆//hql.append(" and sas.id.dt <= to_date('" + rankYear + "-" + rankMonth + "-" + TimeTool.findMaxDateInMonth(rankYear,rankMonth) + " 23:59:59'," + "YYYY-MM-DD HH24:MI:SS");
銆銆sql.append(" and A.DT = fn_time_convert(to_date('" + rankYear + "-" + rankMonth + "'," + "'YYYY-MM')) ");
銆銆}
銆銆if(categoryId != null && categoryId.intValue() != 0){
銆銆sql.append(" and A.CID = " + categoryId.intValue());
銆銆}
銆銆if(characterName != null && !characterName.trim().equals("")){
銆銆sql.append(" and A.GAMEID = '" + characterName.trim()+"' ");
銆銆}
銆銆sql.append(" ORDER BY RANK ASC) C ");
銆銆sql.append(" LEFT JOIN TB_FS_POSITION D ");
銆銆sql.append(" ON C.POSID = D.POSID ");
銆銆sql.append(" ORDER BY C.RANK ");
銆銆System.out.println("hql="+sql.toString());////////////////
銆銆//浣跨敤鑷繁鐨勫垎欏電▼搴忔帶鍒剁粨鏋滈泦
銆銆Pagination pageInfo = new Pagination(sql.toString(),1,10,getJdbcTemplate());
銆銆return pageInfo.getResultList();
銆銆//return getJdbcTemplate().queryForList(sql.toString());
銆銆}
鏂囩珷渚嗘簮錛歨ttp://java.chinaitlab.com/Spring/38091.html

Ke 2008-04-20 19:32 鍙戣〃璇勮
]]>
[杞琞涓涓硾鍨婬ibernate DAO瀹炵幇http://www.tkk7.com/keweibo/articles/184372.htmlKeKeThu, 06 Mar 2008 15:17:00 GMThttp://www.tkk7.com/keweibo/articles/184372.htmlhttp://www.tkk7.com/keweibo/comments/184372.htmlhttp://www.tkk7.com/keweibo/articles/184372.html#Feedback0http://www.tkk7.com/keweibo/comments/commentRss/184372.htmlhttp://www.tkk7.com/keweibo/services/trackbacks/184372.html闃呰鍏ㄦ枃

Ke 2008-03-06 23:17 鍙戣〃璇勮
]]>
杞?鐢⊿pring蹇熷紑鍙慾ms搴旂敤錛圝BOSS鏈嶅姟鍣級http://www.tkk7.com/keweibo/articles/175545.htmlKeKeTue, 15 Jan 2008 13:00:00 GMThttp://www.tkk7.com/keweibo/articles/175545.htmlhttp://www.tkk7.com/keweibo/comments/175545.htmlhttp://www.tkk7.com/keweibo/articles/175545.html#Feedback2http://www.tkk7.com/keweibo/comments/commentRss/175545.htmlhttp://www.tkk7.com/keweibo/services/trackbacks/175545.htmlJava娑堟伅鏈嶅姟(JMS)鏄敤浜庣紪鍐欎嬌鐢ㄥ紓姝ユ秷鎭紶閫掔殑JEE搴旂敤紼嬪簭鐨凙PI銆備紶緇熺殑浣跨敤JMS API榪涜娑堟伅浼犻掔殑瀹炵幇鍖呮嫭澶氫釜姝ラ錛屼緥濡侸NDI鏌ヨ闃熷垪榪炴帴宸ュ巶鍜孮ueue璧勬簮錛屽湪瀹為檯鍙戦佸拰鎺ユ敹娑堟伅鍓嶅垱寤轟竴涓狫MS浼氳瘽銆?

銆銆 Spring妗嗘灦鍒欑畝鍖栦簡浣跨敤JEE緇勪歡(鍖呮嫭JMS)鐨勪換鍔°傚畠鎻愪緵鐨勬ā鏉挎満鍒墮殣钘忎簡鍏稿瀷鐨凧MS瀹炵幇鐨勭粏鑺傦紝榪欐牱寮鍙戜漢鍛樺彲浠ラ泦涓簿鍔涙斁鍦ㄥ鐞嗘秷鎭殑瀹為檯宸ヤ綔涓紝鑰屼笉鐢ㄦ媴蹇冨浣曞幓鍒涘緩錛岃闂垨娓呴櫎JMS璧勬簮銆?/p>

銆銆 鏈枃灝嗗Spring JMS API浣滀竴涓榪幫紝騫墮氳繃涓涓繍琛屽湪JBoss MQ鏈嶅姟鍣ㄤ笂鐨剋eb渚嬬▼鏉ヤ粙緇嶅浣曚嬌鐢⊿pring JMS API鏉ュ紓姝ュ鐞嗭紙鍙戦佸拰鎺ユ敹錛夋秷鎭傛垜灝嗛氳繃浼犵粺JMS瀹炵幇鍜孲pring JMS瀹炵幇涓よ呴棿鐨勬瘮杈冿紝鏉ュ睍紺轟嬌鐢⊿pring JMS澶勭悊娑堟伅鏄浣曠殑綆鍗曞拰鐏墊椿銆?/p>

寮傛娑堟伅浼犻掑拰闈㈠悜鏈嶅姟鏋舵瀯

銆銆鍦ㄧ幇瀹炰腑錛屽ぇ澶氭暟web璇鋒眰閮芥槸鍚屾澶勭悊鐨勩備緥濡傦紝褰撶敤鎴瘋鐧誨叆涓涓綉绔欙紝棣栧厛杈撳叆鐢ㄦ埛鍚嶅拰瀵嗙爜錛岀劧鍚庢湇鍔″櫒楠岃瘉鐧誨綍鍚堟硶鎬с傚鏋滈獙璇佹垚鍔燂紝紼嬪簭灝嗗厑璁歌鐢ㄦ埛榪涘叆緗戠珯銆傝繖閲岋紝鐧誨綍璇鋒眰鍦ㄤ粠瀹㈡埛绔帴鏀朵互鍚庤鍗蟲椂澶勭悊浜嗐備俊鐢ㄥ崱楠岃瘉鏄彟涓涓悓姝ュ鐞嗙殑渚嬪瓙錛涘彧鏈夋湇鍔″櫒璇佸疄杈撳叆鐨勪俊鐢ㄥ崱鍙鋒槸鏈夋晥鐨勶紝鍚屾椂瀹㈡埛鍦ㄥ笎鎴蜂笂鏈夎凍澶熺殑瀛樻錛屽鎴鋒墠琚厑璁哥戶緇搷浣溿備絾鏄鎴戜滑鎬濊冧竴涓嬪湪欏哄簭澶勭悊緋葷粺涓婄殑鏀粯緇撶畻姝ラ銆備竴鏃︾郴緇熻瘉瀹炶鐢ㄦ埛淇$敤鍗$殑淇℃伅鏄噯紜殑錛屽茍涓斿湪甯愭埛涓婃湁瓚沖鐨勮祫閲戯紝灝變笉蹇呯瓑鍒版墍鏈夌殑鏀粯緇嗚妭钀藉疄銆佽漿璐﹀畬鎴愩傛敮浠樼粨綆楀彲浠ュ紓姝ユ柟寮忚繘琛岋紝榪欐牱瀹㈡埛鍙互緇х畫榪涜鏍告煡鎿嶄綔銆?/p>

銆銆 闇瑕佹瘮鍏稿瀷鍚屾璇鋒眰鑰楄垂鏇撮暱鏃墮棿鐨勮姹傦紝鍙互浣跨敤寮傛澶勭悊銆傚彟涓涓紓姝ュ鐞嗙殑渚嬪瓙鏄紝鍦ㄦ湰鍦拌捶嬈懼鐞嗙▼搴忎腑錛屾彁浜よ嚦鑷姩鎵塊攢緋葷粺錛圓US錛夌殑淇$敤璇鋒眰澶勭悊榪囩▼銆傚綋鍊熸柟鎻愪氦璐鋒鐢寵鍚庯紝鎶墊娂鍏徃浼氬悜AUS鍙戦佽姹傦紝浠ヨ幏鍙栦俊鐢ㄥ巻鍙茶褰曘傜敱浜庤繖涓姹傝姹傚緱鍒板叏闈㈣屽張璇︾粏鐨勪俊鐢ㄦ姤鍛婏紝鍖呮嫭鍊熸柟鐜頒粖鍜岃繃鍘葷殑甯愭埛錛屾渶榪戠殑浠樻鍜屽叾浠栬儲鍔¤祫鏂欙紝鏈嶅姟鍣ㄩ渶瑕佽楄垂杈冮暱鐨勬椂闂達紙鍑犲皬鏃舵垨鐫鏈夋椂鐢氳嚦鏄嚑澶╋級鏉ュ榪欎簺璇鋒眰浣滃嚭鍝嶅簲銆傚鎴風紼嬪簭錛堝簲鐢級瑕佷笌鏈嶅姟鍣ㄨ繛鎺ュ茍鑰楄垂濡傛闀跨殑鏃墮棿鏉ョ瓑寰呯粨鏋滐紝榪欐槸姣棤鎰忎箟鐨勩傚洜姝ら氫俊搴旇鏄紓姝ュ彂鐢熺殑錛涗篃灝辨槸錛屼竴鏃﹁姹傝鎻愪氦錛屽畠灝辮鏀劇疆鍦ㄩ槦鍒椾腑錛屽悓鏃跺鎴風涓庢湇鍔″櫒鏂紑榪炴帴銆傜劧鍚嶢US鏈嶅姟浠庢寚瀹氱殑闃熷垪涓夊嚭璇鋒眰榪涜澶勭悊錛屽茍灝嗗鐞嗗緱鍒扮殑娑堟伅鏀劇疆鍦ㄥ彟涓涓秷鎭槦鍒楅噷銆傛渶鍚庯紝瀹㈡埛绔▼搴忎粠榪欎釜闃熷垪涓夊嚭澶勭悊緇撴灉錛岀揣鎺ョ潃澶勭悊榪欎釜淇$敤鍘嗗彶鏁版嵁銆?/p>

JMS

銆銆 濡傛灉鎮ㄤ嬌鐢ㄨ繃JMS浠g爜錛屾偍浼氬彂鐜板畠涓嶫DBC鎴朖CA寰堝儚銆傚畠鎵鍖呭惈鐨勬牱鏈唬鐮佸垱寤烘垨JMS璧勬簮瀵硅薄鍥炴函錛屼嬌寰楁瘡涓嬈℃偍闇瑕佸啓涓涓柊綾繪潵鍙戦佸拰鎺ユ敹娑堟伅鏃訛紝閮藉叿鏈夋洿濂界殑浠g爜瀵嗛泦鎬у拰閲嶅鎬с備互涓嬪簭鍒楁樉紺轟簡浼犵粺JMS瀹炵幇鎵鍖呮嫭鐨勬楠わ細

  1. 鍒涘緩JNDI鍒濆涓婁笅鏂囷紙context錛夈?
  2. 浠嶫NDI涓婁笅鏂囪幏鍙栦竴涓槦鍒楄繛鎺ュ伐鍘傘?
  3. 浠庨槦鍒楄繛鎺ュ伐鍘備腑鑾峰彇涓涓猀uene銆?
  4. 鍒涘緩涓涓猄ession瀵硅薄銆?
  5. 鍒涘緩涓涓彂閫佽咃紙sender錛夋垨鎺ユ敹鑰咃紙receiver錛夊璞°?
  6. 浣跨敤姝ラ5鍒涘緩鐨勫彂閫佽呮垨鎺ユ敹鑰呭璞″彂閫佹垨鎺ユ敹娑堟伅銆?
  7. 澶勭悊瀹屾秷鎭悗錛屽叧闂墍鏈塉MS璧勬簮銆?

鎮ㄥ彲浠ョ湅鍒幫紝姝ラ6鏄鐞嗘秷鎭殑鍞竴鍦版柟銆傚叾浠栨楠ら兘鍙槸綆$悊涓庡疄闄呬笟鍔¤姹傛棤鍏崇殑JMS璧勬簮錛屼絾鏄紑鍙戜漢鍛樺繀欏葷紪鍐欏茍緇存姢榪欎簺棰濆姝ラ鐨勪唬鐮併?/p>

Spring JMS

銆銆 Spring妗嗘灦鎻愪緵浜嗕竴涓ā鏉挎満鍒舵潵闅愯棌Java APIs鐨勭粏鑺傘侸EE寮鍙戜漢鍛樺彲浠ヤ嬌鐢↗DBCTemplate鍜孞NDITemplate綾繪潵鍒嗗埆璁塊棶鍚庡彴鏁版嵁搴撳拰JEE璧勬簮錛堟暟鎹簮錛岃繛鎺ユ睜錛夈侸MS涔熶笉渚嬪銆係pring鎻愪緵JMSTemplate綾伙紝鍥犳寮鍙戜漢鍛樹笉鐢ㄤ負涓涓狫MS瀹炵幇鍘葷紪鍐欐牱鏈唬鐮併傛帴涓嬫潵鏄湪寮鍙慗MS搴旂敤紼嬪簭鏃禨pring鎵鍏鋒湁涓浜涚殑浼樺娍銆?/p>

  1. 鎻愪緵JMS鎶借薄API錛岀畝鍖栦簡璁塊棶鐩爣錛堥槦鍒楁垨涓婚錛夊拰鍚戞寚瀹氱洰鏍囧彂甯冩秷鎭椂JMS鐨勪嬌鐢ㄣ?
  2. JEE寮鍙戜漢鍛樹笉闇瑕佸叧蹇僇MS涓嶅悓鐗堟湰錛堜緥濡侸MS 1.0.2涓嶫MS 1.1錛変箣闂寸殑宸紓銆?
  3. 寮鍙戜漢鍛樹笉蹇呬笓闂ㄥ鐞咼MS寮傚父錛屽洜涓篠pring涓烘墍鏈塉MS寮傚父鎻愪緵浜嗕竴涓湭緇忔鏌ョ殑寮傚父錛屽茍鍦↗MS浠g爜涓噸鏂版姏鍑恒?

紺轟緥紼嬪簭

        璇存槑錛氬洜涓哄彧鏄負浜嗘紨紺哄浣曚嬌鐢╯pring緙栧啓jms鐨勫簲鐢紝鎵浠ユ湰渚嬫病鏈変粈涔堝疄闄呯敤閫斻?/p>

        紼嬪簭鍔熻兘錛歁essageProducer.java鏍規嵁涓鐢ㄦ埛淇℃伅浜х敓涓涓秷鎭彂閫佸埌 JMS Provider錛涚敱MessageConsumer.java鎺ユ敹銆?/p>

1.鍦↗boss閲岄厤緗甔ML鏂囦歡鍒涘緩涓涓柊鐨凧MS provider銆?br /> 鎵撳紑浣嶄簬%JBOSS_HOME%server\default\deploy\jms鏂囦歡澶逛笅鐨刯bossmq-destinations-service.xml鏂囦歡錛屽姞鍏ヤ互涓嬩唬鐮佺墖鏂細
 <!--  Register User Send/Receive Queue  -->
 <mbean code="org.jboss.mq.server.jmx.Queue"
   name="jboss.mq.destination:service=Queue,name=registerUserQueue">
   <depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
 </mbean>
 <!--  Register User Send/Receive Topic  -->
 <mbean code="org.jboss.mq.server.jmx.Topic"
  name="jboss.mq.destination:service=Topic,name=registerUserTopic">
   <depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
 </mbean>
2.鍦╯pring鐨勯厤緗枃浠朵腑閰嶇疆JMS緇勪歡鐨勫叿浣撶粏鑺傘?br />  錛?錛塉NDI涓婁笅鏂囨槸鍙栧緱JMS璧勬簮鐨勮搗濮嬩綅緗紝鍥犳棣栧厛鎴戜滑瑕侀厤緗甁NDI妯℃澘錛?br />     <!-- JNDI涓婁笅鏂?瀹冩槸鍙栧緱JMS璧勬簮鐨勮搗濮嬩綅緗? -->
   <bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate">
    <property name="environment">
     <props>
      <prop key="java.naming.factory.initial">
       org.jnp.interfaces.NamingContextFactory
      </prop>
      <prop key="java.naming.provider.url">localhost</prop>
      <prop key="java.naming.factory.url.pkgs">
       org.jnp.interfaces:org.jboss.naming
      </prop>
     </props>
    </property>
   </bean>
   娉ㄦ剰錛氭JNDI妯℃澘鐢ㄥ埌浜唎rg.jnp.interfaces.NamingContextFactory鎵浠ヨ鎶?JBOSS_HOME%\client涓嬬殑jbossall-client.jar鍔犲埌浣犵殑欏圭洰鐨刢lasspath涓?br /> 錛?錛夐厤緗繛鎺ュ伐鍘傦細
   <!-- JMS榪炴帴宸ュ巶 -->
     <bean id="jmsConnectionFactory"class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiTemplate">
     <ref bean="jndiTemplate" />
    </property>
    <property name="jndiName">
     <value>XAConnectionFactory</value>
    </property>
   </bean>
   娉ㄦ剰錛歑AConnectionFactory榪欎釜JNDI鍚嶅瓧鏄湪%JBOSS_HOME%server\default\deploy\jms鏂囦歡澶逛笅鐨刯ms-ds.xml涓畾涔夌殑(瀹冩槸鐢盝Boss鎸囧畾鐨?銆?br />  錛?錛夐厤緗甁msTemplate緇勪歡銆傚湪渚嬬▼涓垜浠嬌鐢↗msTemplate102銆傚悓鏃朵嬌鐢╠efaultDestination灞炴ф潵鎸囧畾JMS鐩爣銆?br />   <!-- JMS妯℃澘閰嶇疆 -->
  <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate102">
   <property name="connectionFactory" ref="jmsConnectionFactory" />
   <property name="defaultDestination" ref="destination" />
   <property name="pubSubDomain">
    <value>true</value>
   </property>
   <!-- 絳夊緟娑堟伅鐨勬椂闂?ms) -->
   <property name="receiveTimeout">
         <value>30000</value>
      </property>
  </bean>
  娉ㄦ剰錛氬鏋滀嬌鐢╰opic-subscribe(涓婚璁㈤槄)妯″紡錛岃妯℃澘鐨刾ubSubDomain灞炴у間負true;鑻ヤ嬌鐢≒ToP(鐐瑰鐐?妯″紡錛宲ubSubDomain灞炴у間負false鎴栦笉閰嶇疆璇ュ睘鎬с?br />  (4)瀹氫箟涓涓狫MS鐩爣鏉ュ彂閫佸拰鎺ユ敹娑堟伅:
  <bean id="destination" class="org.springframework.jndi.JndiObjectFactoryBean">
   <property name="jndiTemplate">
    <ref bean="jndiTemplate" />
   </property>
   <property name="jndiName">
    <value>topic/registerUserTopic</value>
   </property>
  </bean>
 (5)閰嶇疆鍙戦佽呭拰鎺ユ敹鑰呯粍浠?
  <!-- 娑堟伅鍙戝竷鑰?-->
  <bean id="msgProducer" class="com.boco.jms.MessageProducer">
   <property name="jmsTemplate" ref="jmsTemplate" />
  </bean>
  <!-- 娑堟伅鎺ユ敹鑰?-->
  <bean id="msgConsumer" class="com.boco.jms.MessageConsumer">
   <property name="jmsTemplate" ref="jmsTemplate" />
  </bean>
3.鐩稿簲鐨勭被:
 (1). User瀵硅薄銆?br />    /**
   *  User.java
   *  created on Jul 2, 2006
   *  Copyrights 2006 BOCO,Inc. All rights reserved.
   */
  package com.boco.dto;
  
  import java.io.Serializable;
  
  /**
   * desc: 鐢ㄦ埛淇℃伅 Bean
   * @author qiujy
   */
  public class User {
   private int id;
   private String username;
   private String password;
   private String email;
   
   public User(){}
   
   //浠ヤ笅涓篏etter,setter鏂規硶鐣?br />    ......
  }
  
 (2).娑堟伅鐢熶駭鑰咃細
   /**
   *  MessageProducer.java
   *  created on Jul 22, 2006
   *  Copyrights 2006 BOCO,Inc. All rights reserved.
   */
  package com.boco.jms;
  
  import javax.jms.JMSException;
  import javax.jms.MapMessage;
  import javax.jms.Message;
  import javax.jms.Session;
  
  import org.springframework.jms.core.JmsTemplate;
  import org.springframework.jms.core.MessageCreator;
  
  import com.boco.dto.User;
  
  /**
   * desc:娑堟伅鐢熶駭鑰?br />    * @author qiujy
   *
   */
  public class MessageProducer {
   /** JMS妯℃澘 */
   private JmsTemplate jmsTemplate;
   
   public void setJmsTemplate(JmsTemplate jmsTemplate){
    this.jmsTemplate = jmsTemplate;
   }
   
   public void sendMessage(final User user){
    //璋冪敤妯℃澘鐨剆end鏉ュ彂閫佹秷鎭?br />     jmsTemplate.send(new MessageCreator(){
  
     public Message createMessage(Session session) throws JMSException {
      //鏋勯犱竴涓鍙戦佺殑娑堟伅
      MapMessage message = session.createMapMessage();
       message.setInt("id", user.getId());
       message.setString("username", user.getUsername());
       message.setString("password", user.getPassword());
       message.setString("email", user.getEmail());
      System.out.println("send success!!");
      return message;
     }
    });
   }
  }
  
 (3).娑堟伅娑堣垂鑰咃細
  /**
   *  MessageConsumer.java
   *  created on Jul 22, 2006
   *  Copyrights 2006 BOCO,Inc. All rights reserved.
   */
  package com.boco.jms;
  
  import javax.jms.JMSException;
  import javax.jms.MapMessage;
  
  import org.springframework.jms.core.JmsTemplate;
  
  import com.boco.dto.User;
  
  /**
   * desc:娑堟伅娑堣垂鑰?br />    * @author qiujy
   *
   */
  public class MessageConsumer {
   /** JMS妯℃澘 */
   private JmsTemplate jmsTemplate;
   
   public void setJmsTemplate(JmsTemplate jmsTemplate){
    this.jmsTemplate = jmsTemplate;
   }
   
   public User receiveMessage(){
    //鍙傛暟涓篋estination鐨凧NDI鍚嶅瓧鍘繪帀鍓嶉潰鐨勬ā寮忕被鍨嬫爣璇?br />     //MapMessage msg = (MapMessage)jmsTemplate.receive("registerUserQueue");
    MapMessage msg = (MapMessage)jmsTemplate.receive("registerUserTopic");
    User user = new User();
    
    try {
     user.setId(msg.getInt("id"));
     user.setUsername(msg.getString("username"));
     user.setPassword(msg.getString("password"));
     user.setEmail(msg.getString("email"));
    } catch (JMSException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
    
    return user;
   }
  }

 (4).嫻嬭瘯鐢ㄤ緥錛?br />    //======== 鐢熶駭鑰呮祴璇曠敤渚?===============
   /**
   *  TestMsgProducer.java
   *  created on Jul 22, 2006
   *  Copyrights 2006 BOCO,Inc. All rights reserved.
   */
  package com.boco.jms;
  
  import junit.framework.TestCase;
  
  import org.springframework.context.ApplicationContext;
  import org.springframework.context.support.ClassPathXmlApplicationContext;
  
  import com.boco.dto.User;
  
  /**
   * desc:
   * @author qiujy
   *
   */
  public class TestMsgProducer extends TestCase {
  
   private ApplicationContext context;
   /**
    * @param arg0
    */
   public TestMsgProducer(String arg0) {
    super(arg0);
    context = new ClassPathXmlApplicationContext("applicationContext_jms.xml");
   }
  
   /* (non-Javadoc)
    * @see junit.framework.TestCase#setUp()
    */
   protected void setUp() throws Exception {
    super.setUp();
   }
  
   /* (non-Javadoc)
    * @see junit.framework.TestCase#tearDown()
    */
   protected void tearDown() throws Exception {
    super.tearDown();
   }
  
   /**
    * Test method for {@link com.boco.jms.MessageProducer#sendMessage(com.boco.dto.User)}.
    */
   public void testSendMessage() {
    User user = new User();
    user.setId(132);
    user.setUsername("JMSTest");
    user.setPassword("password");
    user.setEmail("support@boco.com.cn");
    
    MessageProducer producer = (MessageProducer)context.getBean("msgProducer");
    
    producer.sendMessage(user);
    
   }
  
  }

  //============ 娑堣垂鑰呮祴璇曠敤渚?===============
  /**
   *  TestMsgConsumer.java
   *  created on Jul 22, 2006
   *  Copyrights 2006 BOCO,Inc. All rights reserved.
   */
  package com.boco.jms;
  
  import junit.framework.TestCase;
  
  import org.springframework.context.ApplicationContext;
  import org.springframework.context.support.ClassPathXmlApplicationContext;
  
  import com.boco.dto.User;
  
  /**
   * desc:
   * @author qiujy
   *
   */
  public class TestMsgConsumer extends TestCase {
   private ApplicationContext context;
   /**
    * @param arg0
    */
   public TestMsgConsumer(String arg0) {
    super(arg0);
    context = new ClassPathXmlApplicationContext("applicationContext_jms.xml");
   }
  
   /* (non-Javadoc)
    * @see junit.framework.TestCase#setUp()
    */
   protected void setUp() throws Exception {
    super.setUp();
   }
  
   /* (non-Javadoc)
    * @see junit.framework.TestCase#tearDown()
    */
   protected void tearDown() throws Exception {
    super.tearDown();
   }
  
   /**
    * Test method for {@link com.boco.jms.MessageConsumer#receiveMessage()}.
    */
   public void testReceiveMessage() {
    MessageConsumer consumer = (MessageConsumer)context.getBean("msgConsumer");
    User user = consumer.receiveMessage();
    assertNotNull(user);
    System.out.println( "id========" + user.getId()
        + "\nname======" + user.getUsername()
        + "\npassword==" + user.getPassword()
        + "\nemail=====" + user.getEmail());
   }
  
  }

 


Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1418938

鍚姩JBOSS鏈嶅姟鍣?鍏堣繍琛孴estMsgConsumer.java;鍐嶈繍琛孴estMsgProducer.java,鍗沖彲鐪嬪埌鎺у埗鍙扮殑杈撳嚭浜?鍢誨樆~~~~~



Ke 2008-01-15 21:00 鍙戣〃璇勮
]]>
浣跨敤澶栭儴灞炴ф枃浠?鍏充簬PropertyPlaceholderConfigurer) http://www.tkk7.com/keweibo/articles/169870.htmlKeKeSun, 23 Dec 2007 14:23:00 GMThttp://www.tkk7.com/keweibo/articles/169870.htmlhttp://www.tkk7.com/keweibo/comments/169870.htmlhttp://www.tkk7.com/keweibo/articles/169870.html#Feedback1http://www.tkk7.com/keweibo/comments/commentRss/169870.htmlhttp://www.tkk7.com/keweibo/services/trackbacks/169870.html<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
    <bean id="propertyConfigurer"
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location">
            <value>classpath:com/starxing/test/jdbc.properties</value>
        </property>
<!--
 浣跨敤locations灞炴у畾涔夊涓厤緗枃浠?br />        <property name="locations">
            <list>
                <value>classpath:config/maxid.properties</value>
                <value>classpath:config/jdoserver.properties</value>
            </list>
</property>
  -->
    </bean>
    <bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="url">
            <value>${database.url}</value>
        </property>
        <property name="driverClassName">
            <value>${database.driver}</value>
        </property>
        <property name="username">
            <value>${database.user}</value>
        </property>
        <property name="password">
            <value>${database.password}</value>
        </property>

    </bean>
</beans>

3.Config.java
package com.starxing.test;

import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.FileSystemResource;
import org.springframework.jdbc.datasource.DriverManagerDataSource;

public class Config {

    public static void main(String[] args) {
        XmlBeanFactory factory = new XmlBeanFactory(new FileSystemResource(
                "com/starxing/test/conf.xml"));

        // 濡傛灉瑕佸湪BeanFactory涓嬌鐢紝bean factory post-processor蹇呴』鎵嬪姩榪愯:
        PropertyPlaceholderConfigurer cfg = new PropertyPlaceholderConfigurer();
        cfg.setLocation(new FileSystemResource(
                "com/starxing/test/jdbc.properties"));
        cfg.postProcessBeanFactory(factory);

        DriverManagerDataSource dataSource = (DriverManagerDataSource) factory
                .getBean("dataSource");
        System.out.println(dataSource.getDriverClassName());

        // 娉ㄦ剰錛孉pplicationContext鑳藉鑷姩杈ㄨ鍜屽簲鐢ㄥ湪鍏朵笂閮ㄧ講鐨勫疄鐜頒簡BeanFactoryPostProcessor鐨刡ean銆傝繖灝辨剰鍛崇潃錛屽綋浣跨敤ApplicationContext鐨勬椂鍊欏簲鐢≒ropertyPlaceholderConfigurer浼氶潪甯哥殑鏂逛究銆傜敱浜庤繖涓師鍥狅紝寤鴻鎯寵浣跨敤榪欎釜鎴栬呭叾浠朾ean
        // factory postprocessor鐨勭敤鎴蜂嬌鐢ˋpplicationContext浠f浛BeanFactroy銆?br />         ApplicationContext context = new ClassPathXmlApplicationContext(
                "com/starxing/test/conf.xml");
        DriverManagerDataSource dataSource2 = (DriverManagerDataSource) context
                .getBean("dataSource");
        System.out.println(dataSource2.getDriverClassName());
    }

}

鐩稿叧鏂囨。:


銆浣跨敤榪欎竴瑙e喅鏂規錛屾垜浠彲浠ョ敓鎴愬涓嬬殑灞炴ф枃浠訛紙/WEB-INF/jdbc.properties錛夛細
jdbc.driver=org.postgresql.Driver
jdbc.url=jdbc:postgresql://localhost/test
jdbc.user=postgres
jdbc.password=

銆銆鎴戜滑鐨凚ean閰嶇疆濡備笅錛?/p>

<bean id="propertyConfigurer" 
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>/WEB-INF/jdbc.properties</value>
</property>
</bean>

<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>${jdbc.driver}</value>
</property>
<property name="url">
<value>${jdbc.url}</value>
</property>
<property name="username">
<value>${jdbc.user}</value>
</property>
<property name="password">
<value>${jdbc.password}</value>
</property>
</bean>

銆銆濡備笂鎵榪幫紝鎴戜滑瀹氫箟浜嗕竴涓狿ropertyPlaceholderConfigurer綾葷殑瀹炰緥錛屽茍灝嗗叾浣嶇疆灞炴ц緗負鎴戜滑鐨勫睘鎬ф枃浠躲傝綾昏瀹炵幇涓築ean宸ュ巶鐨勫悗澶勭悊鍣紝騫跺皢浣跨敤瀹氫箟鍦ㄦ枃浠朵腑鐨勫睘鎬ф潵浠f浛鎵鏈夌殑鍗犱綅絎︼紙${...}value錛夈?/p>

銆銆鍒╃敤榪欑鎶鏈紝鎴戜滑鍙互浠巃pplicationContext.xml涓Щ闄ゆ墍鏈夌壒瀹氫簬涓繪満鐨勯厤緗睘鎬с傞氳繃榪欑鏂瑰紡錛屾垜浠彲浠ヨ嚜鐢卞湴涓鴻鏂囦歡娣誨姞鏂扮殑Bean錛岃屼笉蹇呮媴蹇冪壒瀹氫簬涓繪満灞炴х殑鍚屾鎬с傝繖鏍峰彲浠ョ畝鍖栫敓浜ч儴緗插拰緇存姢銆?/p>



PropertyPlaceholderConfigurer浣滀負涓涓猙ean factory post-processor瀹炵幇錛屽彲浠ョ敤鏉ュ皢BeanFactory瀹氫箟涓殑灞炴у兼斁緗埌鍙︿竴涓崟鐙殑Java Properties鏍煎紡鐨勬枃浠朵腑銆傝繖浣垮緱鐢ㄦ埛涓嶇敤瀵笲eanFactory鐨勪富XML瀹氫箟鏂囦歡榪涜澶嶆潅鍜屽嵄闄╃殑淇敼錛屽氨鍙互瀹氬埗涓浜涘熀鏈殑灞炴э紙姣斿璇存暟鎹簱鐨剈rls,鐢ㄦ埛鍚嶅拰瀵嗙爜錛夈?

鑰冭檻涓涓狟eanFactory瀹氫箟鐨勭墖鏂紝閲岄潰鐢ㄥ崰浣嶇瀹氫箟浜咲ataSource錛?

鍦ㄤ笅闈㈣繖涓緥瀛愪腑錛屽畾涔変簡涓涓猟atasource錛屽茍涓旀垜浠細鍦ㄤ竴涓閮≒orperties鏂囦歡涓厤緗竴浜涚浉鍏沖睘鎬с?鍦ㄨ繍琛屾椂錛屾垜浠負BeanFactory鎻愪緵涓涓?tt class="literal">PropertyPlaceholderConfigurer錛屽畠灝嗙敤Properties鏂囦歡涓殑鍊兼浛鎹㈡帀榪欎釜datasource鐨勫睘鎬у鹼細

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName"><value>${jdbc.driverClassName}</value></property>
<property name="url"><value>${jdbc.url}</value></property>
<property name="username"><value>${jdbc.username}</value></property>
<property name="password"><value>${jdbc.password}</value></property>
</bean>

鐪熸鐨勫兼潵鑷簬鍙︿竴涓狿roperties鏍煎紡鐨勬枃浠?

jdbc.driverClassName=org.hsqldb.jdbcDriver
jdbc.url=jdbc:hsqldb:hsql://production:9002
jdbc.username=sa
jdbc.password=root

濡傛灉瑕佸湪BeanFactory涓嬌鐢紝bean factory post-processor蹇呴』鎵嬪姩榪愯:

XmlBeanFactory factory = new XmlBeanFactory(new FileSystemResource("beans.xml"));
PropertyPlaceholderConfigurer cfg = new PropertyPlaceholderConfigurer();
cfg.setLocation(new FileSystemResource("jdbc.properties"));
cfg.postProcessBeanFactory(factory);

娉ㄦ剰錛孉pplicationContext鑳藉鑷姩杈ㄨ鍜屽簲鐢ㄥ湪鍏朵笂閮ㄧ講鐨勫疄鐜頒簡BeanFactoryPostProcessor鐨刡ean銆傝繖灝辨剰鍛崇潃錛屽綋浣跨敤ApplicationContext鐨勬椂鍊欏簲鐢≒ropertyPlaceholderConfigurer浼氶潪甯哥殑鏂逛究銆傜敱浜庤繖涓師鍥狅紝寤鴻鎯寵浣跨敤榪欎釜鎴栬呭叾浠朾ean factory postprocessor鐨勭敤鎴蜂嬌鐢ˋpplicationContext浠f浛BeanFactroy銆?

PropertyPlaceHolderConfigurer涓嶄粎浠呭湪浣犳寚瀹氱殑Porperties鏂囦歡涓煡鎵懼睘鎬э紝 濡傛灉瀹冨湪鍏朵腑娌℃湁鎵懼埌浣犳兂浣跨敤鐨勫睘鎬э紝瀹冭繕浼氬湪Java鐨勭郴緇焢roperties涓煡鎵俱?榪欎釜琛屼負鑳藉閫氳繃璁劇疆閰嶇疆涓殑systemPropertiesMode 灞炴ф潵瀹氬埗銆傝繖涓睘鎬ф湁涓変釜鍊鹼紝 涓涓閰嶇疆鎬繪槸瑕嗙洊錛屼竴涓瀹?span class="emphasis">姘鎬笉瑕嗙洊錛屼竴涓瀹冧粎鍦╬roperties鏂囦歡涓壘涓嶅埌鐨勬椂鍊欒鐩栥?璇峰弬鑰?PropertiesPlaceholderConfigurer鐨凧avaDoc鑾峰緱鏇村淇℃伅銆?
鏂囩珷鏉ユ簮:http://www.cublog.cn/u/9295/showart.php?id=261437



Ke 2007-12-23 22:23 鍙戣〃璇勮
]]>
鍦⊿ervlet涓皟鐢╯pring涓畾涔夌殑Beanhttp://www.tkk7.com/keweibo/articles/162964.htmlKeKeSun, 25 Nov 2007 05:42:00 GMThttp://www.tkk7.com/keweibo/articles/162964.htmlhttp://www.tkk7.com/keweibo/comments/162964.htmlhttp://www.tkk7.com/keweibo/articles/162964.html#Feedback2http://www.tkk7.com/keweibo/comments/commentRss/162964.htmlhttp://www.tkk7.com/keweibo/services/trackbacks/162964.htmlpackage dgut.ke.servlet;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.ajaxtags.helpers.AjaxXmlBuilder;
import org.ajaxtags.servlets.BaseAjaxServlet;
import org.springframework.web.context.support.WebApplicationContextUtils;

import dgut.ke.model.Book;
import dgut.ke.service.IBookService;

@SuppressWarnings("serial")
public class BookCallOut extends BaseAjaxServlet {

 private IBookService bookService;


 @Override
 public String getXmlContent(HttpServletRequest request,
   HttpServletResponse response) throws Exception {
  
  request.setCharacterEncoding("UTF-8");
  String bookName = request.getParameter("bookName");
  System.out.println("---- " + bookName);
  Book book = (Book) bookService.findForObject(
    "from Book as b where b.bookName=?",new Object[]{bookName});
  
  AjaxXmlBuilder builder = new AjaxXmlBuilder()
         .addItemAsCData("鎻愮ず鏍囬", "<P>鍏充簬涔︾睄:<b>" + book.getBookNo() +"</b>鐨勪俊鎭涓?<br/></p>");

  
  return builder.toString();
 }


 @Override
 public void init(ServletConfig servletConfig) throws ServletException {
  // 蹇呴』鍦ㄩ噸鍐欐柟娉曠殑絎竴琛岃皟鐢ㄤ互涓嬭鍙?br />   super.init(servletConfig);
  bookService = (IBookService) WebApplicationContextUtils
   .getRequiredWebApplicationContext(getServletContext())
   .getBean("bookService");

 }

}



Ke 2007-11-25 13:42 鍙戣〃璇勮
]]>
spring鍙戦佺函鏂囨湰鏂囦歡閭歡http://www.tkk7.com/keweibo/articles/160850.htmlKeKeThu, 15 Nov 2007 14:35:00 GMThttp://www.tkk7.com/keweibo/articles/160850.htmlhttp://www.tkk7.com/keweibo/comments/160850.htmlhttp://www.tkk7.com/keweibo/articles/160850.html#Feedback0http://www.tkk7.com/keweibo/comments/commentRss/160850.htmlhttp://www.tkk7.com/keweibo/services/trackbacks/160850.htmlpackage dgut.ke.test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;

public class MailTest {

 public static void main(String[] args) {
  
  ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
  JavaMailSender mailSender = (JavaMailSender) context.getBean("mailSender");
  SimpleMailMessage mail = new SimpleMailMessage();
  mail.setFrom("sskwfnihc@gmail.com");
  mail.setTo("sskwfnihc@163.com");
  mail.setSubject("KE緇欎綘鍙戜簡涓灝侀偖浠?);
  mail.setText("This is a mailTest example");
  mailSender.send(mail);
  System.out.println("鎴愬姛鍙戦佹枃鏈枃浠訛紒");
 }
}
spring閰嶇疆鏂囦歡:
... ...
<!-- 鍙戦佺數瀛愰偖浠?-->
 <bean id="mailSender"
  class="org.springframework.mail.javamail.JavaMailSenderImpl"
  abstract="false" lazy-init="default" autowire="default"
  dependency-check="default">
  <property name="host" value="smtp.gmail.com"></property>
  <property name="port" value="465"></property>
  <property name="username">
   <value>sskwfnihc</value>
  </property>
  <property name="password">
   <value>write your password here</value>
  </property>
  <property name="javaMailProperties">
   <props>
    <prop key="mail.smtp.auth">true</prop>
    <prop key="mail.smtp.starttls.enable">true</prop>
    <prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
   </props>
  </property>
 </bean>
... ...



Ke 2007-11-15 22:35 鍙戣〃璇勮
]]>
DataAccessException http://www.tkk7.com/keweibo/articles/157052.htmlKeKeTue, 30 Oct 2007 13:30:00 GMThttp://www.tkk7.com/keweibo/articles/157052.htmlhttp://www.tkk7.com/keweibo/comments/157052.htmlhttp://www.tkk7.com/keweibo/articles/157052.html#Feedback0http://www.tkk7.com/keweibo/comments/commentRss/157052.htmlhttp://www.tkk7.com/keweibo/services/trackbacks/157052.html 榪欐剰鍛崇潃浣犲湪搴旂敤紼嬪簭涓笉蹇呭己琛屾崟鑾瘋寮傚父,鍙互浜ょ敱涓婂眰澶勭悊.濡傛灉鐩存帴澶勭悊SQLException ,鎴戜滑闇瑕佽幏寰楃壒瀹氭暟鎹簱鐨勯敊璇唬鐮?鐒跺悗鍒ゆ柇璇QLException 鐨勫師鍥?鍖呰鎴愯嚜瀹氫箟寮傚父鐒跺悗浜ょ敱涓婂眰澶勭悊.鐜板湪,鐢變簬Spring 涓烘垜浠彁渚涗簡涓涓笌搴曞眰鏁版嵁搴撴棤鍏崇殑寮傚父浣撶郴,鍥犳鍙互鏂逛究鍦板鐞嗗悇縐嶆暟鎹闂紓甯?Spring 鐢氳嚦璇曞浘緲昏瘧鍚勪釜鏁版嵁搴撳巶鍟嗙殑閿欒浠g爜,鐒跺悗杞崲涓篋ataAccessException 寮傚父浣撶郴涓殑鏌愪竴涓悎閫傜殑瀛愮被.
        鍦ㄥ簲鐢ㄧ▼搴忎腑鎴戜滑鍙渶瑕佹崟鑾稤ataAccessException 鍗沖彲,鐢變簬DataAccessException 鏄粠 NestedRuntimeException 緇ф壙鑰屾潵鐨?鍥犳,瀹冨畬鏁村湴淇濆瓨浜嗗師濮嬪紓甯哥殑淇℃伅.

Ke 2007-10-30 21:30 鍙戣〃璇勮
]]>
spring2.0瀛︿範絎旇涓?Bean鐨勪綔鐢ㄥ煙)http://www.tkk7.com/keweibo/articles/154735.htmlKeKeSun, 21 Oct 2007 09:55:00 GMThttp://www.tkk7.com/keweibo/articles/154735.htmlhttp://www.tkk7.com/keweibo/comments/154735.htmlhttp://www.tkk7.com/keweibo/articles/154735.html#Feedback0http://www.tkk7.com/keweibo/comments/commentRss/154735.htmlhttp://www.tkk7.com/keweibo/services/trackbacks/154735.htmlBean鐨勪綔鐢ㄥ煙

  鍦╯pring2.0涓紝涓鍏卞畾涔変簡5縐嶄綔鐢ㄥ煙錛屽垎鍒槸singleton銆乸rototype銆乺equest銆乻ession銆?br /> globalSession銆傚叾涓悗闈笁縐嶄粎瀵筗EB搴旂敤紼嬪簭鏈夋晥銆?br />   spring2.0閫氳繃scope=""灞炴ф潵瀹氫箟Bean鏈変綔鐢ㄥ煙錛岃屽湪spring1.x涓紝鐢變簬鍙湁singleton 鍜?br /> prototype榪欎袱縐嶄綔鐢ㄥ煙錛屽洜姝わ紝spring1.x涓畾涔塀ean鐨勪綔鐢ㄥ煙鏄氳繃singleton=“true|false" 鏉?br /> 瀹氫箟鐨勩傚湪spring2.0涓鍏堝簲璇ヨ冭檻鐢╯cope灞炴ф潵瀹氫箟Bean 鐨勪綔鐢ㄥ煙銆?/p>

Singleton浣滅敤鍩?br />   
  spring2.0鏄粯璁ean鐨勪綔鐢ㄥ煙鏄痵cope="singleton"銆傚嵆spring鐨処oC瀹瑰櫒浠呬負姣忎釜Bean鍒涘緩涓涓?br /> 瀹炰緥騫朵笖淇濇寔Bean鐨勫紩鐢紝鎹㈣█涔嬶紝姣忔璋冪敤getBean()鏂規硶璇鋒眰榪斿洖鐨凚ean鎬繪槸鍚屼竴涓疄渚嬨傝繖綾諱技
浜庛婅璁℃ā寮忋嬩竴涔︿腑鐨凷ingleton錛堝崟渚嬶級妯″紡銆?/p>

  public class Singleton {
    private static Singleton instance = new Singleton();
    private Singleton() {};
    pubilc static Singleton getInstance() {
      return instance;
    }
  }
  鐢變簬鏋勯犳柟娉曡鐢蟲槑涓簆rivate錛屽洜姝わ紝鍦ㄧ被鐨勫閮ㄤ笉鍙疄渚嬪寲璇ョ被錛屽敮涓鐨勫疄渚嬫寔鏈夊湪闈欐佸紩鐢ㄤ腑
浠庡閮ㄨ幏鍙栬瀹炰緥鐨勫敮涓鍏ュ彛鏄皟鐢⊿ingleton鐨勯潤鎬佹柟娉昐ingleton.getInstance().

Prototype浣滅敤鍩?/p>

  濡傛灉闇瑕佹瘡嬈¤繑鍥濨ean鐨勬柊瀹炰緥錛屽嵆姣忔閮芥柊寤轟竴涓疄渚嬶紝鍒欏彲浠ラ氳繃璁劇疆scope="prototype"鏉?br /> 瀹炵幇銆傝繖鏍鋒垜浠氨鍛婅瘔浜唖pring瀹瑰櫒閲囩敤Prototype浣滅敤鍩熴傞噰鐢╬rototype浣滅敤鍩熸椂錛宻pring瀹瑰櫒鎬諱細
榪斿洖涓涓垱寤虹殑鏂板疄渚嬶紝鍥犳spring瀹瑰櫒涓鏃﹀皢瀹炰緥浜ょ粰瀹㈡埛绔紝灝變笉鍐嶅鍏惰繘琛岃窡韙紩鐢ㄤ簡錛屾墍浠?br /> 鏃犳硶瀵筽rototype浣滅敤鍩熺殑Bean瀹氫箟destory-method,涓嶈繃浠嶅彲浠ヤ嬌鐢╥nit-method銆?br /> 鍏跺畠涓変釜灞炴у間粎瀵筗EB紼嬪簭鏈夋晥錛岃繖閲屼笉浣滆璁恒?/p>

Ke 2007-10-21 17:55 鍙戣〃璇勮
]]>
spring2.0瀛︿範絎旇浜?鐞嗚ВIoC鐨勬蹇?http://www.tkk7.com/keweibo/articles/154675.htmlKeKeSun, 21 Oct 2007 04:59:00 GMThttp://www.tkk7.com/keweibo/articles/154675.htmlhttp://www.tkk7.com/keweibo/comments/154675.htmlhttp://www.tkk7.com/keweibo/articles/154675.html#Feedback1http://www.tkk7.com/keweibo/comments/commentRss/154675.htmlhttp://www.tkk7.com/keweibo/services/trackbacks/154675.html鐞嗚ВIoC鐨勬蹇?/p>

  IoC鍏ㄧОInversion of Control,鐩磋瘧涓烘帶鍒跺弽杞?浣曡皳IoC?鍦ㄨВ閲婃姒傚康涔嬪墠,鎴戜滑鏉ョ湅鐪嬩笅闈㈢殑渚嬪瓙
import ...

public class BookService {
  private BookDAO bookDAO = new DbBookDAO();
  
  public List<Book> listBooks(String author) {
    List<Book> books = bookDAO.listAll();
    return books ;
  }
}

鍙互鐪嬪埌,listBooks鏂規硶鐨勫姛鑳介潪甯哥畝鍗?鍗沖垪鍑烘墍鏈変功綾?鑰屽垪鍑烘墍鏈変功綾嶇殑鍔熻兘琚鎵樼粰bookDAO瀵硅薄.
鑰冭檻鍒頒功綾嶅彲鑳藉瓨鍦ㄥ縐嶅艦寮?濡傛暟鎹簱,XML鏂囦歡絳?灝咮ookDAO鐢蟲槑涓烘帴鍙?鍥犳鎴戜滑瀹炵幇浜嗕竴涓叿浣?br /> 瀛愮被DbBookDAO.
  鐜板湪闇瑕佽冭檻鐨勬槸,BookService濡備綍鎸佹湁bookDAO瀵硅薄.鏈綆鍗曠殑鍔炴硶鏄?鍦˙ookService鐨勫唴閮ㄦ寔鏈?br /> 涓涓狣bBookDAO鐨勫疄渚?涓婇潰鐨勪緥瀛愮‘瀹炴槸榪欎箞鍋氱殑.鑰冭檻涓涓嬩細鍙戠幇浠ヤ笅鐨勯棶棰?
(1)鍦˙ookService涓‖緙栫爜鍒涘緩浜咮ookDAO,濡傛灉闇瑕佸彟涓縐岯ookDAO鐨勫疄鐜?鍒欓渶瑕佷慨鏀笲ookService鐨?br />  浠g爜,鎹㈠彞璇濆氨鏄疊ookService緇勪歡涓嶈兘鑴辯BookDAO鐨勫叿浣撳疄鐜?
(2)BookDAO鐨勫疄渚嬫棤娉曡鍏跺畠緇勪歡鍏變韓.鍋囪鍏跺畠鐨勭粍浠朵篃闇瑕佸紩鐢˙ookDAO,鍒欏涓粍浠跺緢闅懼叡浜竴涓?br />  BookDAO瀹炰緥,鍥犱負璇ュ疄渚嬬殑鐢熷懡鍛ㄦ湡瀹氫箟鍦ㄤ簡BookService緇勪歡涓簡,浠庤岄毦浠ュ叡浜?
(3)濡傛灉BookDAO浠嶉渶瑕佸紩鐢ㄥ叾瀹冭祫婧?渚嬪DataSource,鍒橞ookService鍙兘榪橀渶瑕佽礋璐g鐞嗗拰緇存姢涓涓?br />  DataSource,鑰岃繖瀹炰緥涓嶆槸浣滀負涓婂眰緇勪歡BookService鐨勮亴璐?
(4)嫻嬭瘯BookService鏄鏉傜殑,鍥犱負棣栧厛緙栧啓DbBookDAO,鍊樿嫢DbBookDAO榪樹緷璧栦簬DataSource,鏄浉褰撳鏉?
  浠庝互涓婂嚑鐐瑰彲浠ョ湅鍑?濡傛灉緋葷粺涓湁澶ч噺鐨勭粍浠?鍏跺畠鐢熷懡鍛ㄦ湡鍜岀浉浜掍箣闂寸殑渚濊禆鍏崇郴,濡傛灉鐢辯粍浠?br /> 鑷繁緇存姢,涓嶄絾鍔犲ぇ鐨勭郴緇熺殑澶嶆潅搴?鑰屼笖浼氬鑷寸粍浠朵箣闂寸殑鏋佷負绱у瘑鐨勮﹀悎,緇ц岀粰嫻嬭瘯鍜岀淮鎶ゅ甫鏉ヤ簡
鏋佸ぇ鐨勫洶闅?
  鍦↖oC妯″紡涓?鎺у埗鏉冨彂鐢熶簡鍙嶈漿:浠庡簲鐢ㄧ▼搴忚漿縐誨埌浜咺oC瀹瑰櫒.緇勪歡涓嶅啀鐢卞簲鐢ㄧ▼搴忚礋璐e垱寤哄拰閰嶇疆
鑰屾槸鐢卞鍣ㄨ礋璐?搴旂敤紼嬪簭鍙渶鐩存帴浣跨敤宸茬粡鍒涘緩騫墮厤緗ソ鐨勭粍浠?

import ...

public class BookService {
  private BookDAO bookDAO ;
  public void setBookDAO(BookDAO bookDAO) {
   this.bookDAO = bookDAO ;
  }
  
  public List<Book> listBooks(String author) {
    List<Book> books = bookDAO.listAll();
    return books ;
  }
}
淇敼鍚庣殑bookDAO瀹炰緥涓嶅啀鐢盉ookService鍒涘緩,鑰屾槸鐢盜oC瀹瑰櫒璐熻矗灝嗘煇涓狟ookDAO瀹炰緥閫氳繃setBookDAO()
娉ㄥ叆.榪欐牱鍋氱殑濂藉:
(1)BookService涓嶅繀鍏沖績濡備綍鍒涘緩BookDAO鐨勫疄渚?涔熶笉蹇呭叧蹇傿ookDAO鐨勫叿浣撳疄鐜?鍙渶瑕佷嬌鐢ㄥ畠灝卞彲浠ヤ簡
 鍥犳綆鍖栦簡BookService鐨勭紪鐮?
(2)BookDAO鐨勫疄渚嬬敱IoC瀹瑰櫒綆$悊,鍥犳,鍙互鍦ㄥ涓粍浠朵箣闂村叡浜?鍙瀹冧滑涔熷疄鐜頒簡鐩稿簲鐨剆etBookDAO()
 鏂規硶灝卞彲浠ヤ簡.
(3)嫻嬭瘯BookService涔熷彉鎴愬崄鍒嗗鏄撲簡.

IoC瀹瑰櫒璐熻矗瀹炰緥鍖栨墍鏈夌殑緇勪歡,鍥犳闇瑕佸憡璇夊鍣ㄥ浣曞垱寤虹粍浠跺拰鍚勭粍浠朵箣闂寸殑渚濊禆鍏崇郴.



Ke 2007-10-21 12:59 鍙戣〃璇勮
]]>
spring2.0瀛︿範絎旇涓(Bean鍒濆鍖?http://www.tkk7.com/keweibo/articles/154665.htmlKeKeSun, 21 Oct 2007 04:24:00 GMThttp://www.tkk7.com/keweibo/articles/154665.htmlhttp://www.tkk7.com/keweibo/comments/154665.htmlhttp://www.tkk7.com/keweibo/articles/154665.html#Feedback1http://www.tkk7.com/keweibo/comments/commentRss/154665.htmlhttp://www.tkk7.com/keweibo/services/trackbacks/154665.htmlBean鍒濆鍖?/p>

 spring鐨処oc瀹瑰櫒鏍規嵁XML閰嶇疆鏂囦歡鏉ュ垵濮嬪寲Bean.闇瑕佹敞鎰忕殑涓鐐規槸,ApplicationContext鍒濆鍖朆ean鍜屽熀
鏈殑BeanFactory鏈夋墍涓嶅悓,鍩烘湰鐨凚eanFactory鎬繪槸寤惰繜鍔犺澆Bean,鐩村埌絎竴嬈¤皟鐢╣etBean("BeanId")鏂規硶
璇鋒眰Bean瀹炰緥鏃?BeanFactory鎵嶄細鍒涘緩榪欎釜Bean,鑰孉pplicationContext鍦ㄨ嚜韜垵濮嬪寲鏃跺氨涓嬈℃у垱寤轟簡
鎵鏈夌殑Bean,浜嗚В榪欎竴鐐規槸闈炲父閲嶈鐨?鍥犱負ApplicationContext鍦ㄥ垵濮嬪寲鏃跺氨鑳介獙璇乆ML閰嶇疆鏂囦歡鐨勬紜?
鑰屼嬌鐢˙eanFactory,鐩村埌璋冪敤getBean("BeanId")鏂規硶鑾峰彇Bean瀹炰緥鏃?鎵嶅彲鑳戒細鍙戠幇閰嶇疆閿欒鑰屽鑷存姏鍑?br /> 寮傚父.
 鍙湁鍦ㄩ潪甯哥畝鍗曠殑鎯呭喌涓?浣跨敤鍩烘湰鐨凚eanFactory鎵嶅彲鑳芥弧瓚蟲垜浠殑闇姹?緇濆ぇ澶氭椂鍊欐垜浠嬌鐢?br /> ApplicationContext鏄渶浣崇殑閫夋嫨.鍦ㄥ惎鍔ㄧ殑鏃跺欏氨鑳芥嫻嬮厤緗枃浠剁殑閿欒,榪欐瘮浣跨敤鍩烘湰鐨凚eanFactory
鍦ㄨ繍琛屼竴孌墊椂闂村悗璋冪敤getBean("BeanId")鎶涘嚭寮傚父瑕佸ソ寰楀.騫朵笖,寤惰繜鍔犺澆浼氬甫鏉ユц兘涓婄殑鎹熷け.
ApplicationContext鐢變簬鍦ㄥ惎鍔ㄦ椂闇瑕佷竴嬈℃у埆瀹炰緥鍖栨墍鏈夌殑Bean,濡傛灉瀹氫箟鐨凚ean姣旇緝澶?鍒欏惎鍔ㄧ殑鏃墮棿
浼氭瘮杈冮暱.



Ke 2007-10-21 12:24 鍙戣〃璇勮
]]>
ApplicationContexthttp://www.tkk7.com/keweibo/articles/151696.htmlKeKeWed, 10 Oct 2007 04:53:00 GMThttp://www.tkk7.com/keweibo/articles/151696.htmlhttp://www.tkk7.com/keweibo/comments/151696.htmlhttp://www.tkk7.com/keweibo/articles/151696.html#Feedback0http://www.tkk7.com/keweibo/comments/commentRss/151696.htmlhttp://www.tkk7.com/keweibo/services/trackbacks/151696.html  org.springframework.context.support.FileSystemXmlApplicationContext
 鍙互鎸囧畾XML鏂囦歡鐨勭浉瀵硅礬寰勬垨鑰呯粷瀵硅礬寰勮鍙栧畾涔夋枃浠?br />  org.springframework.context.support.ClassPathXmlApplicationContext
 浠嶤LASSPATH璁劇疆璺緞涓鍙朮ML瀹氫箟鏂囦歡
 org.springframework.context.support.XmlWebApplicationContext
 鍦╳eb搴旂敤紼嬪簭鐨勬枃浠舵灦鏋勪腑,鎸囧畾鐩稿浣嶇疆璇誨彇瀹氫箟鏂囦歡
 
ApplicationContext 鍙互璇誨彇澶氫釜Bean瀹氫箟鏂囦歡,鍙互鍦ㄥ疄渚嬪寲ApplicationContext
鐨勫疄鐜扮被鏃?浠ユ暟緇勬寚瀹欱ean瀹氫箟鏂囦歡鐨勪綅緗?渚嬪
 ApplicationContext context = new ClassPathXmlApplicationContext(
  new String[]{"bean-config1.xml","bean-config2.xml"});
涔熷彲浠ヤ嬌鐢╢ile:/ classpath 鎴栬卌lasspath*:琛ㄧず鎵鏈夌殑Classpath鍓嶇疆璺緞閮藉尮閰?
 ApplicationContext context = new ClassPathXmlApplicationContext(
  "classpath*:beans-config.xml");
涔熷彲浠ユ寚瀹?瀛楃,渚嬪瀹炵幇璇誨彇鎵鏈変互"beans"寮澶寸殑XML閰嶇疆鏂囦歡,浣嗚娉ㄦ剰鐨勬槸姝ゆ柟娉?br /> 鍙湪瀹為檯鐨勬枃浠剁郴緇熶腑鏈夌敤,濡傛灉鏄湪JAR鏂囦歡涓?浠ユ槸鏃犳晥鐨?
 ApplicationContext context = new ClassPathXmlApplicationContext(
  "beans*.xml");
褰撻渶瑕佸涓狟ean瀹氫箟鏂囦歡,涔熷彲浠ュ湪鍏朵腑涓涓枃浠朵腑浣跨敤<import>鏍囩
 ... ...
 <beans>
  <import resource="beans-config1.xml" />
  <import resource="beans-config2" />
  ...
 <beans>
 姝ゆ柟娉曟湁涓涓渶瑕佹敞鎰忕殑鍦版柟灝辨槸<import>鏍囩蹇呮湁浣嶄簬<bean>鏍囩涔嬪墠,瀹氫箟鏂囦歡蹇呴』
 鍦ㄥ悓涓涓洰褰曟垨鑰呮槸CLASSPATH涔嬩腑,浠ョ浉瀵硅礬寰勬寚瀹氭枃浠朵綅緗?

Ke 2007-10-10 12:53 鍙戣〃璇勮
]]>
dwr spring鏁村悎 http://www.tkk7.com/keweibo/articles/150826.htmlKeKeSun, 07 Oct 2007 04:33:00 GMThttp://www.tkk7.com/keweibo/articles/150826.htmlhttp://www.tkk7.com/keweibo/comments/150826.htmlhttp://www.tkk7.com/keweibo/articles/150826.html#Feedback0http://www.tkk7.com/keweibo/comments/commentRss/150826.htmlhttp://www.tkk7.com/keweibo/services/trackbacks/150826.htmlAjax,瀹冧嬌嫻忚鍣ㄥ彲浠ヤ負鐢ㄦ埛鎻愪緵鏇翠負鑷劧鐨勬祻瑙堜綋楠?瀵逛簬j2EE WEB寮鍙戜漢鍛樻潵璇?浣跨敤DWR妗嗘灦鍙互寰堢畝鍗曠殑浣跨敤Ajax鎶鏈?
鏈枃浠ヤ竴涓狣WR+SPRING鐨勫疄渚嬫潵璇存槑DWR鐨勪嬌鐢?
1銆佸皢dwr.jar鏀懼埌搴旂敤鐨?WEB-INF/lib鐩綍涓?
2銆侀厤緗畐eb.xml,澧炲姞濡備笅浠g爜:

  1. <!--鍒濆鍖朩ebApplicationContext-->  
  2.  <context-param>  
  3.         <param-name>contextConfigLocation</param-name>  
  4.         <param-value>/WEB-INF/applicationContext.xml,/WEB-INF/action-servlet.xml</param-value>  
  5.  </context-param>  
  6.  <listener>  
  7.        <listener-class>  
  8.              org.springframework.web.context.ContextLoaderListener   
  9.        </listener-class>  
  10.  </listener>  
  11. <!--閰嶇疆DWR鎷︽埅鍣?->  
  12.  <servlet>  
  13.   <servlet-name>dwr-invoker</servlet-name>  
  14. <!-- 鎸囧畾DWR鏍稿績Servlet鐨勫疄鐜扮被  -->
  15.   <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>  
  16.   <init-param>  
  17.    <param-name>debug</param-name>  
  18.    <param-value>true</param-value>  
  19.   </init-param>  
  20.  </servlet>  
  21.  <servlet-mapping>  
  22.   <servlet-name>dwr-invoker</servlet-name>  
  23.   <url-pattern>/dwr/*</url-pattern>  
  24.  </servlet-mapping>  

3銆佸涓璬wr.xml鏂囦歡
鏂囦歡鍐呭錛?
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd">  
  3. <dwr>  
  4.  <allow>  
  5.   <create creator="spring" javascript="DWRUser">  
  6.    <param name="beanName" value="DWRUser"/>  
  7.   </create>  
  8.  </allow>  
  9. </dwr>  

creator灞炴х殑鍊煎彲浠ユ槸new,struts,spring......鍥犱負姝ゅ鏄暣鍚坰pring鏉ュ仛鐨勶紝鎵浠ヨ緗垚“spring”錛宩avascript="DWRUser" 琛ㄧず瀹炰緥杞崲鎴恓avascript璇█鍚庝互DWRUser鍛藉悕錛屽墠鍙伴〉闈㈠彲浠ラ氳繃浠g爜錛?lt;script src="../../dwr/interface/DWRUser.js" type="text/javascript"></script>錛夋潵璋冪敤銆俻aram鍏冪礌鐨刵ame灞炴у煎彲浠ユ槸class,beanName絳夛紝姝ゅ鐢╞eanName,value寰楀兼槸瀹氫箟鍦╝pplicationContext.xml涓煇涓猙ean鐨刬d鍊箋?
4銆佸垱寤轟竴涓疄浣揵ean渚汥WR杞崲鎴恓s

 

  1. package com.note.dwr;   
  2. import com.note.bussies.service.IUserService;   
  3. public class User {   
  4.  private IUserService ius;   
  5.     
  6.  public IUserService getIus() {   
  7.   return ius;   
  8.  }   
  9.  public void setIus(IUserService ius) {   
  10.   this.ius = ius;   
  11.  }   
  12.  public User(){   
  13.      
  14.  }   
  15.  public boolean isExist(String username) {   
  16.       Users user = this.ius.getUserByName(username);   
  17.       return (null == user) ? false : true;   
  18.  }   
  19. }  

5銆佸湪applicationContext.xml涓厤緗4姝ュ啓鐨刡ean
  1. ......   
  2.  <bean id="DWRUser" class="com.note.dwr.User">  
  3.   <property name="ius">  
  4.    <ref bean="UserService" />  
  5.   </property>  
  6.  </bean>  
  7. ......  

6銆佸湪瑙嗗浘欏甸潰涓皟鐢?
鍏堝鍏ヤ互涓嬫枃錛屾瘡涓枃浠剁殑鍔熻兘榪欓噷涓嶅啀璇﹁堪
  1. <script type='text/javascript' src='../../dwr/interface/DWRUser.js'></script>  
  2. <script type='text/javascript' src='../../dwr/engine.js'></script>  
  3. <script type='text/javascript' src='../../dwr/util.js'></script>  

鍥犱負鎴戠殑瑙嗗浘鏂囦歡鏄斁鍦?view/user/涓嬶紝鎵浠ヨ繖閲岀敤浜?./../榪斿洖鍒版牴
鍏蜂綋璋冪敤錛?
  1. <script type='text/javascript'>  

     function regUserChked(){   
  2.   var username=$("username").value;   
  3.   DWRUser.isExist(username,showData);//showData鍥炶皟鍑芥暟   
  4.  }   
  5.  function showData(data){   
  6.      if(data){   
  7.           DWRUtil.setValue("userMsg","璇ョ敤鎴峰悕宸茬粡琚敞鍐岋紝璇鋒洿鎹㈡偍鐨勭敤鎴峰悕錛?);   
  8.      }else{   
  9.           DWRUtil.setValue("userMsg","鎭枩鎮紝璇ョ敤鎴峰悕灝氭湭琚敞鍐岋紒");         
  10.      }   
  11.  }   
  12. </script>  
  13. input type="text" name="username" value="" onblur="regUserChked()" /><div id="userMsg"></div>  


Ke 2007-10-07 12:33 鍙戣〃璇勮
]]>
甯歌鐨勪簨鍔′紶鎾鍒?/title><link>http://www.tkk7.com/keweibo/articles/145987.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Mon, 17 Sep 2007 14:15:00 GMT</pubDate><guid>http://www.tkk7.com/keweibo/articles/145987.html</guid><wfw:comment>http://www.tkk7.com/keweibo/comments/145987.html</wfw:comment><comments>http://www.tkk7.com/keweibo/articles/145987.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/keweibo/comments/commentRss/145987.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/keweibo/services/trackbacks/145987.html</trackback:ping><description><![CDATA[甯歌鐨勪簨鍔′紶鎾鍒欐湁濡備笅鍑犵錛? <ol> <li> PROPAGATION_MANDATORY錛?瑕佹眰璋冪敤璇ユ柟娉曠殑綰跨▼蹇呴』澶勪簬浜嬪姟鐜涓紝鍚﹀垯鎶涘嚭寮傚父錛? <li> PROPAGATION_NESTED錛氬鏋滄墽琛岃鏂規硶鐨勭嚎紼嬪凡澶勪簬浜嬪姟鐜涓嬶紝渚濈劧鍚姩鏂扮殑浜嬪姟錛屾柟娉曞湪宓屽鐨勪簨鍔¢噷鎵ц銆傚鏋滄墽琛岃鏂規硶鐨勭嚎紼嬪茍鏈浜庝簨鍔′腑錛屼篃鍚姩鏂扮殑浜嬪姟錛岀劧鍚庢墽琛岃鏂規硶錛屾鏃朵笌 PROPAGATION_REQUIRED鐩稿悓錛? <li> PROPAGATION_NEVER錛氫笉鍏佽璋冪敤璇ユ柟娉曠殑綰跨▼澶勪簬浜嬪姟鐜涓嬶紝濡傛灉璋冪敤璇ユ柟娉曠殑綰跨▼澶勪簬浜嬪姟鐜涓嬶紝鍒欐姏鍑哄紓甯革紱 <li> PROPAGATION_NOT_SUPPORTED錛氬鏋滆皟鐢ㄨ鏂規硶鐨勭嚎紼嬪浜庝簨鍔′腑錛屽垯鍏堟殏鍋滃綋鍓嶄簨鍔★紝鐒舵埛鎵ц璇ユ柟娉曪紱 <li> PROPAGATION_REQUIRED錛氳姹傚湪浜嬪姟鐜涓墽琛岃鏂規硶錛屽鏋滃綋鍓嶇嚎紼嬪凡澶勪簬浜嬪姟涓紝鍒欑洿鎺ヨ皟鐢紝鐒跺悗鎵ц璇ユ柟娉曪紱 <li> PROPAGATION_REQUIRES_NEW錛氳鏂規硶瑕佹眰鏈変竴涓湪鏂扮殑浜嬪姟鐜涓墽琛岋紝濡傛灉褰撳墠綰跨▼宸插浜庝簨鍔′腑錛屽厛鏆傚仠褰撳墠浜嬪姟錛屽惎鍔ㄦ柊浜嬪姟鍚庢墽琛岃鏂規硶錛屽鏋滃綋鍓嶈皟鐢ㄧ嚎紼嬩笉澶勫湪浜嬪姟涓紝鍒欏惎鍔ㄦ柊鐨勪簨鍔℃柟娉曞悗鎵ц鏂規硶錛? <li> PROPAGATION_SUPPORTS錛氬鏋滃綋鍓嶆墽琛岀嚎紼嬪浜庝簨鍔′腑錛屽垯鎵ц褰撳墠浜嬪姟錛屽惁鍒欎笉浣跨敤浜嬪姟銆?</li> </ol> <img src ="http://www.tkk7.com/keweibo/aggbug/145987.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/keweibo/" target="_blank">Ke</a> 2007-09-17 22:15 <a href="http://www.tkk7.com/keweibo/articles/145987.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>OpenSessionInView妯″紡榪愮敤 http://www.tkk7.com/keweibo/articles/145977.htmlKeKeMon, 17 Sep 2007 13:31:00 GMThttp://www.tkk7.com/keweibo/articles/145977.htmlhttp://www.tkk7.com/keweibo/comments/145977.htmlhttp://www.tkk7.com/keweibo/articles/145977.html#Feedback0http://www.tkk7.com/keweibo/comments/commentRss/145977.htmlhttp://www.tkk7.com/keweibo/services/trackbacks/145977.htmlSpring+Hibernate涓璒penSessionInView妯″紡榪愮敤
閰嶇疆OpenSessionInView妯″紡涔熷緢綆鍗曪紝Spring鎻愪緵浜嗕袱縐嶆柟寮忥細

1銆佽繃婊ゆ祦Filter

<filter>
<filter-name>OpenSessionInViewFilter</filter-name>
<filter-class>
            org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
</filter-class>
</filter>
 
<filter-mapping>
<filter-name>OpenSessionInViewFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
2銆両nterceptor

<!-- SimpleUrlHandlerMapping -->    
    
<bean id="simpleUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        
<property name="interceptors" ref="openSessionInViewInterceptor"/>        
        
<property name="mappings">
          
<props>       
             銆傘傘?nbsp;              
          
</props>    
        
</property>
    
</bean>
    
    
<!-- =========== openSessionInViewInterceptor ==============-->
    
<bean id="openSessionInViewInterceptor"
          class
="org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor">
        
<property name="sessionFactory" ref="sessionFactory"/>
    
</bean>

鎺ㄨ崘鐢ㄧ浜岀鏂瑰紡


Ke 2007-09-17 21:31 鍙戣〃璇勮
]]>
org.springframework.web.filter.CharacterEncodingFilterhttp://www.tkk7.com/keweibo/articles/144650.htmlKeKeWed, 12 Sep 2007 15:27:00 GMThttp://www.tkk7.com/keweibo/articles/144650.htmlhttp://www.tkk7.com/keweibo/comments/144650.htmlhttp://www.tkk7.com/keweibo/articles/144650.html#Feedback1http://www.tkk7.com/keweibo/comments/commentRss/144650.htmlhttp://www.tkk7.com/keweibo/services/trackbacks/144650.html <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
 version="2.4">

    <filter>
      <filter-name>CharacterEncodingFilter</filter-name>
      <filter-class>
           org.springframework.web.filter.CharacterEncodingFilter
      </filter-class>
      init-param>
       <param-name>encoding</param-name>
       <param-value>GB2312</param-value>
      </init-param>
      <init-param>
       <param-name>forceEncoding</param-name>
       <param-value>true</param-value>
      </init-param>
     </filter>
<!-- 瑕佽繃婊ゅ緱綾誨瀷 -->
銆銆<filter-mapping>
銆銆<filter-name>SetCharacterEncoding</filter-name>
銆銆<url-pattern>*.jsp</url-pattern>
銆銆</filter-mapping>

</web-app>
public class CharacterEncodingFilter
extends OncePerRequestFilter

Servlet 2.3/2.4 Filter that allows one to specify a character encoding for requests. This is useful because current browsers typically do not set a character encoding even if specified in the HTML page or form.

This filter can either apply its encoding if the request does not already specify an encoding, or enforce this filter's encoding in any case ("forceEncoding"="true"). In the latter case, the encoding will also be applied as default response encoding on Servlet 2.4+ containers (although this will usually be overridden by a full content type set in the view).



Ke 2007-09-12 23:27 鍙戣〃璇勮
]]>
浣跨敤java鐨勪唬鐞嗘満鍒惰繘琛屾棩蹇楄緭鍑?/title><link>http://www.tkk7.com/keweibo/articles/139260.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Sat, 25 Aug 2007 06:21:00 GMT</pubDate><guid>http://www.tkk7.com/keweibo/articles/139260.html</guid><wfw:comment>http://www.tkk7.com/keweibo/comments/139260.html</wfw:comment><comments>http://www.tkk7.com/keweibo/articles/139260.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/keweibo/comments/commentRss/139260.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/keweibo/services/trackbacks/139260.html</trackback:ping><description><![CDATA[<p><span style="COLOR: red"><em><strong> 閫氳繃闈㈠悜鎺ュ彛緙栫▼瀹炵幇鏃ュ織杈撳嚭</strong></em></span><br>(1)寤虹珛涓涓帴鍙imeBookInterface,浠g爜濡備笅<br>/*******TimeBookInterface.java********/<br>package com.gc.dao;</p> <p>public interface TimeBookInterface{</p> <p> public void doAuditing(String name);<br>}<br>(2)緙栧啓鎺ュ彛瀹炵幇綾?浠g爜濡備笅<br>/*******TimeBook.java********/<br>package com.gc.dao.impl;</p> <p>public class TimeBook implements TimeBookInterface{</p> <p> public void doAuditing(String name){<br> <br>  //瀹℃煡鏁版嵁鐨勭浉鍏崇▼搴?br>  ......<br> }<br>}<br>(3)緙栧啓涓涓唬鐞嗙被,鐢ㄦ潵瀹炵幇鏃ュ織杈撳嚭,鍏朵唬鐮佸涓?br>/*******TimeBookProxy.java********/<br>package com.gc.dao.impl;</p> <p>import org.apache.log4j.Level;<br>import org.apache.log4j.Logger;</p> <p>public class TimeBookProxy{</p> <p> private Logger logger = Logger.getLogger(this.getClass().getName());<br> private TimeBookInterface timeBookInterface;<br> public TimeBookProxy(TimeBookInterface timeBookInterface){<br> <br>  this.timeBookInterface = timeBookInterface;<br> }<br> //瀹為檯涓氬姟澶勭悊<br> public void doAuditing(String name){<br> <br>  logger.log(Level.INFO,name+"寮濮嬪鏍告暟鎹?);<br>  timeBookInterface.doAuditing(name);<br>  logger.log(Level.INFO,name+"瀹℃牳鏁版嵁緇撴潫");<br> }<br>}<br>(4)緙栧啓嫻嬭瘯浠g爜綾?br>......<br>public static void main(String[] args){<br>//閽堝鎺ュ彛榪涜緙栫▼<br> TimeBookProxy timeBookProxy = new TimeBookProxy(new TimeBook());<br> timeBookProxy.doAuditing("寮犱笁");<br>}</p> <p><span style="COLOR: red"><strong><em> 浣跨敤java鐨勪唬鐞嗘満鍒惰繘琛屾棩蹇楄緭鍑?/em></strong></span><br>(1)緙栧啓涓涓棩蹇椾俊鎭殑浠g悊綾籐ogProxy,榪欎釜浠g悊綾誨疄鐜頒簡鎺ュ彛InvocationHandler,<br> 鍙互瀵逛換浣曟帴鍙e疄鐜版棩蹇椾俊鎭殑杈撳嚭.鍏朵唬鐞嗗涓?br>package com.gc.dao;</p> <p>import java.lang.reflect.InvocationHandler;<br>import java.lang.reflect.Method;<br>import java.lang.reflect.Proxy;</p> <p>import org.apache.log4j.Level;<br>import org.apache.log4j.Logger;<br>//浠g悊綾誨疄鐜頒簡鎺ュ彛InvocationHandler<br>public class LogProxy implements InvocationHandler{</p> <p> private Logger logger = Logger.getLogger(this.getClass().getName());<br> private Object delegate;<br> //緇戝畾瀵硅薄<br> public Object bing(Object delegate){<br>  this.delegate = delegate;<br>  return Proxy.new ProxyInstance(delegate.getClass().getClassLoader(),delegate.getClass().getInterfaces(),this);<br> }<br> //閽堝鎺ュ彛緙栫▼<br> public Object invoke(Object proxy,Mehtod method,Object[] args)throws Throwable{<br> <br>  Object result = null;<br>  try{<br>  //鍦ㄦ柟娉曡皟鐢ㄥ墠鍚庤繘琛屾棩蹇楄緭鍑?br>   logger.log(Level.INFO,args[0] + "寮濮嬪鏍告暟鎹?);<br>   result = method.invoke(delegate,args);<br>   logger.log(Level.INFO,args[0] + "瀹℃牳鏁版嵁緇撴潫");<br>  }<br>  catch(Exception e){<br>   logger.log(Level.INFO,e.toString());<br>  }<br>  return result;<br> }<br>}<br>(2)寤虹珛涓涓帴鍙imeBookInterface,浠g爜濡備笅<br>/*******TimeBookInterface.java********/<br>package com.gc.dao;</p> <p>public interface TimeBookInterface{</p> <p> public void doAuditing(String name);<br>}<br>(3)緙栧啓鎺ュ彛瀹炵幇綾?浠g爜濡備笅<br>/*******TimeBook.java********/<br>package com.gc.dao.impl;</p> <p>public class TimeBook implements TimeBookInterface{</p> <p> public void doAuditing(String name){<br> <br>  //瀹℃煡鏁版嵁鐨勭浉鍏崇▼搴?br>  ......<br> }<br>}<br>(4)緙栧啓嫻嬭瘯浠g爜綾?br>......<br>public static void main(String[] args){<br> //瀹炵幇浜嗗鏃ュ織綾葷殑閲嶇敤<br> LogProxy logProxy = new LogProxy();<br> TimeBookInterface timeBookInterface = (TimeBookInterface)logProxy.bind(new TimeBook());<br> timeBookProxy.doAuditing("寮犱笁");<br>}<br>浠g爜鏉ヨ嚜spring浠庡叆闂ㄥ埌綺鵑氫竴涔?/p> <img src ="http://www.tkk7.com/keweibo/aggbug/139260.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/keweibo/" target="_blank">Ke</a> 2007-08-25 14:21 <a href="http://www.tkk7.com/keweibo/articles/139260.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>spring 闆嗗悎娉ㄥ叆鏂瑰紡http://www.tkk7.com/keweibo/articles/139118.htmlKeKeFri, 24 Aug 2007 07:51:00 GMThttp://www.tkk7.com/keweibo/articles/139118.htmlhttp://www.tkk7.com/keweibo/comments/139118.htmlhttp://www.tkk7.com/keweibo/articles/139118.html#Feedback0http://www.tkk7.com/keweibo/comments/commentRss/139118.htmlhttp://www.tkk7.com/keweibo/services/trackbacks/139118.htmlspring 闆嗗悎娉ㄥ叆鏂瑰紡

List
 <bean id="helloWorld" class="...">
  <property name="message">
   <list>
    <value>one</value>
    <value>two</value>
    <value>three</value>
   </list>
  </property>
 </bean>
Set
 <bean id="helloWorld" class="...">
  <property name="message">
   <set>
    <value>one</value>
    <value>two</value>
    <value>three</value>
   </set>
  </property>
 </bean>
Map
 <bean id="helloWorld" class="...">
  <property name="message">
   <map>
    <entry key="keytwo">
     <value>one</value>
    </entry>
    <entry key="keytwo">
     <value>two</value>
    </entry>
   </map>
  </property>
 </bean>
Properties
 <bean id="helloWorld" class="...">
  <property name="message">
   <props>
    <prop key="keyone">one</prop>
    <prop key="keytwo">two</prop>
   </props>
  </property>
 </bean>



Ke 2007-08-24 15:51 鍙戣〃璇勮
]]>
spring涓璪ean鐨勯珮綰у睘鎬т箣list, set, map浠ュ強props鍏冪礌(鍚婦渚? (杞? http://www.tkk7.com/keweibo/articles/138216.htmlKeKeMon, 20 Aug 2007 12:09:00 GMThttp://www.tkk7.com/keweibo/articles/138216.htmlhttp://www.tkk7.com/keweibo/comments/138216.htmlhttp://www.tkk7.com/keweibo/articles/138216.html#Feedback0http://www.tkk7.com/keweibo/comments/commentRss/138216.htmlhttp://www.tkk7.com/keweibo/services/trackbacks/138216.html   瀵瑰簲鐨剆pring鐨勯厤緗枃浠朵婦渚嬪涓嬶細
<? xml version="1.0" encoding="gb2312" ?>
<! DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
 "http://www.springframework.org/dtd/spring-beans.dtd"
>

< beans >

 
< bean  id ="chinese"  class ="Chinese" >
 
< property  name ="friends" >
            
< list >
                
< value > 寮犱笁 </ value >
                
< value > 鏉庡洓 </ value >
                
< value > 鐜嬩簲 </ value >
            
</ list >
  
</ property >
  
< property  name ="score" >
            
< map >
                
< entry  key ="鏁板" >
                    
< value > 60 </ value >
                
</ entry >
                
< entry  key ="鑻辮" >
                    
< value > 70 </ value >
                
</ entry >
                
< entry  key ="璇枃" >
                    
< value > 80 </ value >
                
</ entry >
                
< entry  key ="鐗╃悊" >
                    
< value > 90 </ value >
                
</ entry >
                
< entry  key ="鍖栧" >
                    
< value > 95 </ value >
                
</ entry >
            
</ map >
  
</ property >
  
< property  name ="basicInfo" >
            
< props >
                
< prop  key ="韜珮" > 165 </ prop >
                
< prop  key ="浣撻噸" > 45kg </ prop >
                
< prop  key ="瀛﹀巻" > 澶у鏈 </ prop >
            
</ props >
   
</ property >
   
< property  name ="interest" >
            
< set >
                
< value > 鍞辨瓕 </ value >
                
< value > 璺寵垶 </ value >
                
< value > 涔︽硶 </ value >
            
</ set >
   
</ property >

</ bean >

</ beans >


  瀵瑰簲鐨刯ava綾諱負:

public   class  Chinese  implements  People  {
    
private  List friends  =   new  ArrayList();
    
private  Map score  =   new  HashMap();
    
private  Properties basicInfo  =   new  Properties();
    
private  Set interest  =   new  HashSet();
    
// 鐪佺暐瀵瑰簲set鏂規硶
    .
}


Ke 2007-08-20 20:09 鍙戣〃璇勮
]]>
浣跨敤Timer瀹炵幇瀹氭椂鍣?/title><link>http://www.tkk7.com/keweibo/articles/137976.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Sun, 19 Aug 2007 12:11:00 GMT</pubDate><guid>http://www.tkk7.com/keweibo/articles/137976.html</guid><wfw:comment>http://www.tkk7.com/keweibo/comments/137976.html</wfw:comment><comments>http://www.tkk7.com/keweibo/articles/137976.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/keweibo/comments/commentRss/137976.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/keweibo/services/trackbacks/137976.html</trackback:ping><description><![CDATA[<p>鍒╃敤spring瀹炵幇瀹氭椂鍣ㄧ殑寮鍙戣繃紼嬪寘鎷互涓嬩笁涓楠?<br>(1)鍒涘緩瀹氭椂浠誨姟綾?<br>(2)娉ㄥ唽瀹氭椂浠誨姟綾?騫墮厤緗換鍔¤鍒掑拰浠誨姟璋冨害鍣?<br>(3)鍦╓EB欏圭洰涓惎鍔ㄥ畾鏃舵湇鍔?<br>------------------------------------------------------------------------------------------------------------<br>渚嬪瓙(瀹氭椂浠誨姟綾?<br>package dgut.ke.timer;</p> <p>import java.util.TimerTask;</p> <p>public class MainTask extends TimerTask {</p> <p> @Override<br> public void run() {<br>  // TODO Auto-generated method stub<br>  System.out.println("--------------鎵ц瀹氭椂浠誨姟---------------");<br> }</p> <p>}<br>------------------------------------------------------------------------------------------------------------<br>鏂囦歡/WEB-INF/TimerConfig.xml<br><?xml version="1.0" encoding="UTF-8"?><br><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "<a ><br><beans><br> <!-- 娉ㄥ唽瀹氭椂鎵ц瀹炰綋 --><br> <bean id="mainTask" class="dgut.ke.timer.MainTask"></bean><br> <!-- 娉ㄥ唽瀹氭椂淇℃伅 --><br> <bean id="stTask" class="org.springframework.scheduling.timer.ScheduledTimerTask"><br>  <!-- 棣栨鎵ц浠誨姟鍓嶉渶瑕佺瓑寰?縐掗挓 --><br>  <property name="delay"><br>   <value>2000</value><br>  </property><br>  <!-- 浠誨姟鎵ц鐨勫懆鏈?--><br>  <property name="period"><br>   <value>4000</value><br>  </property><br>  <!-- 鍏蜂綋鐨勬墽琛屼換鍔?--><br>  <property name="timerTask"><br>   <ref local="mainTask"/><br>  </property><br> </bean><br> <!-- 閰嶇疆浠誨姟璋冨害鍣?--><br> <bean id="timeFactory" class="org.springframework.scheduling.timer.TimerFactoryBean"><br>  <!-- 娉ㄥ叆瀹氭椂鍣ㄥ垪琛?--><br>  <property name="scheduledTimerTasks"><br>   <list><br>    <ref local="stTask"/><br>   </list><br>  </property><br> </bean><br></beans><br>------------------------------------------------------------------------------------------------------------</p> 鏂囦歡web.xml<br><?xml version="1.0" encoding="UTF-8"?><br><web-app version="2.4" <br> xmlns="<a <br> xmlns:xsi="<a <br> xsi:schemaLocation="<a >http://java.sun.com/xml/ns/j2ee</a> <br> <a ><br>  <br>  <!-- 鍚姩瀹氭椂鏈嶅姟 --><br>  <context-param><br>   <param-name>contextConfigLocation</param-name><br>   <param-value>/WEB-INF/TimerConfig.xml</param-value><br>  </context-param><br>  <listener><br>   <listener-class><br>    org.springframework.web.context.ContextLoaderListener<br>   </listener-class><br>  </listener><br></web-app> <img src ="http://www.tkk7.com/keweibo/aggbug/137976.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/keweibo/" target="_blank">Ke</a> 2007-08-19 20:11 <a href="http://www.tkk7.com/keweibo/articles/137976.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鎷︽埅鍣?/title><link>http://www.tkk7.com/keweibo/articles/137948.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Sun, 19 Aug 2007 07:46:00 GMT</pubDate><guid>http://www.tkk7.com/keweibo/articles/137948.html</guid><wfw:comment>http://www.tkk7.com/keweibo/comments/137948.html</wfw:comment><comments>http://www.tkk7.com/keweibo/articles/137948.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.tkk7.com/keweibo/comments/commentRss/137948.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/keweibo/services/trackbacks/137948.html</trackback:ping><description><![CDATA[<p>鍦ㄦ槧灝勮姹備腑娣誨姞涓涓嫤鎴櫒,鑷畾涔夋嫤鎴櫒蹇呴』瀹炵幇org.springframework.web.servlet.HandlerInterceptor鎺ュ彛銆?br>HandlerInterceptor鐨勭ず渚嬩唬鐮佸涓嬶細<br>public interface HandlerInterceptor<br>{<br>   //鍦ㄥ鐞嗗櫒鎵ц鍓嶈皟鐢?br>boolean preHandle(HttpServletRequest request, HttpServletResponse response,   Object handler) throws Exception;<br><br>   //鍦ㄥ鐞嗗櫒鎵ц鍚庤皟鐢?br>void postHandle(HttpServletRequest request, HttpServletResponse response,   Object handler,   ModelAndView modelAndView ) throws Exception;<br>   //鍦ㄦ暣涓姹傚鐞嗗畬鍚庤皟鐢?br>void afterCompletion(HttpServletRequest request, HttpServletResponse response,   Object handler,   Exception    ex) throws Exception;<br>}<br>----------------------------------------------------------------------------------------------------------------------------<br>鏂囦歡NotLeaveWord.java<br>package dgut.ke.interceptor;</p> <p>import java.util.Calendar;</p> <p>import javax.servlet.RequestDispatcher;<br>import javax.servlet.http.HttpServletRequest;<br>import javax.servlet.http.HttpServletResponse;</p> <p>import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;</p> <p>public class NotLeaveWord extends HandlerInterceptorAdapter <br>{<br> private int startTime;<br> private int endTime;<br> private String interceptorPage;<br>  <br> /*閫氳繃渚濊禆娉ㄥ叆*/<br> public void setStartTime(int startTime) {<br>  this.startTime = startTime;<br> }<br> public void setEndTime(int endTime) {<br>  this.endTime = endTime;<br> }<br> public void setInterceptorPage(String interceptorPage) {<br>  this.interceptorPage = interceptorPage;<br> }<br> public int getStartTime() {<br>  return startTime;<br> }<br> public int getEndTime() {<br>  return endTime;<br> }<br> public String getInterceptorPage() {<br>  return interceptorPage;<br> }<br> /*榪涜鎷︽埅澶勭悊*/<br> public boolean preHandle(HttpServletRequest request,<br>       HttpServletResponse response,<br>       Object handler)throws Exception<br> {<br>  Calendar cal = Calendar.getInstance();<br>  int hour = cal.get(java.util.Calendar.HOUR_OF_DAY);<br>  if( hour > startTime && hour < endTime)<br>  {<br>   request.setAttribute("startTime", this.getStartTime());<br>   request.setAttribute("endTime", this.getEndTime());<br>   RequestDispatcher rd = request.getRequestDispatcher(this.getInterceptorPage());<br>   rd.forward(request, response);<br>   return false;<br>  }<br>  else<br>  {<br>   return true ;<br>  } <br> }<br> <br>}<br>-----------------------------------------------------------------------------------------------------------------</p> 鏂囦歡dispatcherServlet-servlet.xml<br><?xml version="1.0" encoding="UTF-8"?><br><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "<a ><br><beans><br><!-- 瀹氫箟鏄犲皠 --><br> <bean id="urlMapping"<br>  class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"<br>  abstract="false" singleton="true" lazy-init="default"<br>  autowire="default" dependency-check="default"><br>  <!-- 璁劇疆鎷︽埅鍣?--><br>  <property name="interceptors"><br>   <list><br>    <ref local="notLeaveWord"/><br>   </list><br>  </property><br>  <property name="mappings"><br>   <props><br>    <prop key="helloWorld.do">helloWorld</prop><br>   </props><br>  </property><br> </bean><br><!-- 瀹氫箟瑙嗗浘 --><br> <bean id="viewResolver"<br>  class="org.springframework.web.servlet.view.InternalResourceViewResolver"<br>  abstract="false" singleton="true" lazy-init="default"<br>  autowire="default" dependency-check="default"><br>  <property name="viewClass"><br>   <value><br>   org.springframework.web.servlet.view.JstlView<br>   </value><br>  </property><br>  <!-- 瀹氫箟jsp鎵鍦ㄧ殑鐩綍 --><br>  <property name="prefix"><value>/</value></property><br>  <property name="suffix"><value>.jsp</value></property><br> </bean><br><!-- 瀹氫箟鎺у埗鍣?--><br> <bean id="helloWorld" class="dgut.ke.action.HelloWorld"<br>  abstract="false" singleton="true" lazy-init="default"<br>  autowire="default" dependency-check="default"><br>  <property name="helloWorld"><br>   <value>Spring MVC 渚嬪瓙</value><br>  </property><br>  <property name="viewPage"><br>   <value>index</value><br>  </property><br> </bean><br><!-- 鎷︽埅鍣ㄨ緗?--><br> <bean id="notLeaveWord" class="dgut.ke.interceptor.NotLeaveWord"<br>  abstract="false" singleton="true" lazy-init="default"<br>  autowire="default" dependency-check="default"><br>  <property name="startTime"><br>   <value>10</value><br>  </property><br>  <property name="endTime"><br>   <value>20</value><br>  </property><br>  <property name="interceptorPage"><br>   <value>outTime.jsp</value><br>  </property><br> </bean><br></beans><br>-------------------------------------------------------------------------------------------------------------<br>鏂囦歡web.xml<br><?xml version="1.0" encoding="UTF-8"?><br><web-app version="2.4" <br> xmlns="<a <br> xmlns:xsi="<a <br> xsi:schemaLocation="<a >http://java.sun.com/xml/ns/j2ee</a> <br> <a ><br>  <br>  <servlet><br>   <servlet-name>dispatcherServlet</servlet-name><br>   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><br>   <!-- 鍒濆鍖栧弬鏁?--><br>   <init-param><br>    <param-name>contextConfigLocation</param-name><br>    <param-value>/WEB-INF/dispatcherServlet-servlet.xml</param-value><br>   </init-param><br>   <load-on-startup>1</load-on-startup><br>  </servlet><br>  <br>  <servlet-mapping><br>   <servlet-name>dispatcherServlet</servlet-name><br>   <url-pattern>*.do</url-pattern><br>  </servlet-mapping><br>  <br>  <welcome-file-list><br>    <welcome-file>index.jsp</welcome-file><br>  </welcome-file-list><br></web-app><br> <img src ="http://www.tkk7.com/keweibo/aggbug/137948.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/keweibo/" target="_blank">Ke</a> 2007-08-19 15:46 <a href="http://www.tkk7.com/keweibo/articles/137948.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> 主站蜘蛛池模板: <a href="http://48eh.com" target="_blank">国产精品成人无码免费</a>| <a href="http://hnshlt.com" target="_blank">免费无码不卡视频在线观看 </a>| <a href="http://https357171.com" target="_blank">一本色道久久88亚洲精品综合</a>| <a href="http://xiaochidaquan.com" target="_blank">亚洲一级免费毛片</a>| <a href="http://muguangmi.com" target="_blank">色五月五月丁香亚洲综合网</a>| <a href="http://wwwfafa98.com" target="_blank">男女啪啪免费体验区</a>| <a href="http://xy167.com" target="_blank">美女视频黄的免费视频网页</a>| <a href="http://abbobo.com" target="_blank">久久精品国产免费观看</a>| <a href="http://semaopu.com" target="_blank">日产乱码一卡二卡三免费</a>| <a href="http://ttooyuyu.com" target="_blank">久久影视综合亚洲</a>| <a href="http://wbkk88.com" target="_blank">亚洲经典在线中文字幕</a>| <a href="http://yaojing123.com" target="_blank">亚洲美国产亚洲AV</a>| <a href="http://kanzhelu23.com" target="_blank">中文字幕在线视频免费</a>| <a href="http://mogo321.com" target="_blank">国产成人精品免费视频大全麻豆</a>| <a href="http://nxjyyj.com" target="_blank">国产成人免费手机在线观看视频</a>| <a href="http://senimei9.com" target="_blank">伊人亚洲综合青草青草久热</a>| <a href="http://gs168sz.com" target="_blank">久久久久亚洲精品日久生情 </a>| <a href="http://dw168cn.com" target="_blank">精品视频在线免费观看</a>| <a href="http://szicon.com" target="_blank">99re热免费精品视频观看</a>| <a href="http://gztzbj.com" target="_blank">亚洲高清偷拍一区二区三区</a>| <a href="http://sdshfengji.com" target="_blank">亚洲激情视频在线观看</a>| <a href="http://929119.com" target="_blank">亚洲精品无码成人</a>| <a href="http://sijep.com" target="_blank">波多野结衣免费一区视频</a>| <a href="http://440878.com" target="_blank">最近中文字幕mv免费高清电影</a>| <a href="http://bjbanjia01.com" target="_blank">亚洲午夜福利精品久久</a>| <a href="http://19b1.com" target="_blank">亚洲一级毛片免费在线观看</a>| <a href="http://5916733.com" target="_blank">曰韩无码AV片免费播放不卡</a>| <a href="http://wwwwmmmm.com" target="_blank">亚洲一区二区三区免费观看</a>| <a href="http://cxljdz.com" target="_blank">午夜亚洲av永久无码精品</a>| <a href="http://7778kk.com" target="_blank">亚洲色偷偷av男人的天堂</a>| <a href="http://bjbanjia01.com" target="_blank">无忧传媒视频免费观看入口</a>| <a href="http://fantoment.com" target="_blank">最近免费中文字幕mv在线电影</a>| <a href="http://13813855.com" target="_blank">免费大片黄手机在线观看</a>| <a href="http://tianmao920.com" target="_blank">99久久亚洲综合精品成人网</a>| <a href="http://sxgzjssb.com" target="_blank">老司机午夜性生免费福利</a>| <a href="http://006dh.com" target="_blank">亚洲无砖砖区免费</a>| <a href="http://bjycxy88.com" target="_blank">青青草原亚洲视频</a>| <a href="http://lyaa17.com" target="_blank">亚洲AV无码一区二区三区网址</a>| <a href="http://bjfljg.com" target="_blank">久久国产色AV免费看</a>| <a href="http://2h6m.com" target="_blank">亚洲欧洲国产成人综合在线观看 </a>| <a href="http://ywzms.com" target="_blank">亚洲午夜福利在线观看</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>