锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲色偷偷狠狠综合网,麻豆亚洲AV成人无码久久精品
,亚洲欧洲在线播放http://www.tkk7.com/xfan/archive/2006/06/15/53099.html~灝廞~灝廞Thu, 15 Jun 2006 14:44:00 GMThttp://www.tkk7.com/xfan/archive/2006/06/15/53099.htmlhttp://www.tkk7.com/xfan/comments/53099.htmlhttp://www.tkk7.com/xfan/archive/2006/06/15/53099.html#Feedback0http://www.tkk7.com/xfan/comments/commentRss/53099.htmlhttp://www.tkk7.com/xfan/services/trackbacks/53099.html
娉ㄨВ錛?br />1.spring mvc璇鋒墍鏈夌殑璇鋒眰閮芥彁浜ょ粰DispatcherServlet,瀹冧細(xì)濮旀墭搴旂敤緋葷粺鐨勫叾浠栨ā鍧楄礋璐h礋璐e璇鋒眰榪涜鐪熸鐨勫鐞嗗伐浣溿?br />2.DispatcherServlet鏌ヨ涓涓垨澶氫釜HandlerMapping,鎵懼埌澶勭悊璇鋒眰鐨凜ontroller.
3.DispatcherServlet璇瘋姹傛彁浜ゅ埌鐩爣Controller
4.Controller榪涜涓氬姟閫昏緫澶勭悊鍚庯紝浼?xì)杩斿洖涓涓狹odelAndView
5.Dispathcher鏌ヨ涓涓垨澶氫釜ViewResolver瑙嗗浘瑙f瀽鍣?鎵懼埌ModelAndView瀵硅薄鎸囧畾鐨勮鍥懼璞?br />6.瑙嗗浘瀵硅薄璐熻矗娓叉煋榪斿洖緇欏鎴風(fēng)
]]>- Quartz鐨刢ron琛ㄨ揪寮?/title>http://www.tkk7.com/xfan/archive/2006/06/14/52801.html~灝廞~灝廞Wed, 14 Jun 2006 09:36:00 GMThttp://www.tkk7.com/xfan/archive/2006/06/14/52801.htmlhttp://www.tkk7.com/xfan/comments/52801.htmlhttp://www.tkk7.com/xfan/archive/2006/06/14/52801.html#Feedback0http://www.tkk7.com/xfan/comments/commentRss/52801.htmlhttp://www.tkk7.com/xfan/services/trackbacks/52801.html闃呰鍏ㄦ枃

]]> - 鍦╯pring鍒╃敤javamail錛宷uartz瀹氭椂鍙戦侀偖浠?/title>http://www.tkk7.com/xfan/archive/2006/06/13/52577.html~灝廞~灝廞Tue, 13 Jun 2006 14:06:00 GMThttp://www.tkk7.com/xfan/archive/2006/06/13/52577.htmlhttp://www.tkk7.com/xfan/comments/52577.htmlhttp://www.tkk7.com/xfan/archive/2006/06/13/52577.html#Feedback0http://www.tkk7.com/xfan/comments/commentRss/52577.htmlhttp://www.tkk7.com/xfan/services/trackbacks/52577.htmlMailService.java綾?br />
package聽com.open.quartz;
import聽org.springframework.mail.MailException;
import聽org.springframework.mail.MailSender;
import聽org.springframework.mail.SimpleMailMessage;

public聽class聽MailService聽
{
聽聽聽聽private聽MailSender聽mailSender;
聽聽聽聽private聽SimpleMailMessage聽mailMessage;//閭歡妯℃澘

聽聽聽聽public聽void聽sendMail()聽
{
聽聽聽聽聽聽聽聽System.out.println("-----------鍙戦侀偖浠?---------");
聽聽聽聽聽聽聽聽SimpleMailMessage聽msg=new聽SimpleMailMessage(this.mailMessage);
聽聽聽聽聽聽聽聽msg.setText("this聽is聽a聽test聽mail");

聽聽聽聽聽聽聽聽try聽
{
聽聽聽聽聽聽聽聽聽聽聽聽mailSender.send(msg);

聽聽聽聽聽聽聽聽}聽catch聽(MailException聽e)聽
{
聽聽聽聽聽聽聽聽聽聽聽聽e.printStackTrace();
聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽System.out.println("-----------鍙戦佹垚鍔?---------");
聽聽聽聽}
聽聽聽聽聽//鐪佺暐set,get鏂規(guī)硶
} 鍦╳eb.xml閲屾坊鍔犱互涓嬩唬鐮?br />
<listener>
聽聽聽聽聽聽聽聽<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
聽聽聽聽</listener> 鍦╓EB-INF鐩綍涓嬫坊鍔燼pplicationContext.xml鏂囦歡
<beans>
聽聽聽聽<bean聽id="mailSender"
聽聽聽聽聽聽聽聽class="org.springframework.mail.javamail.JavaMailSenderImpl">
聽聽聽聽聽聽聽聽<property聽name="host"聽value="smtp.163.com"/>
聽聽聽聽聽聽聽聽聽聽聽聽<!--聽鏈変簺閭歡鏈嶅姟鍣ㄥ彂閫侀偖浠墮渶瑕佽璇侊紝鎵浠ュ繀欏繪彁渚涘笎鍙仿?-->
聽聽聽聽聽聽聽聽<property聽name="username"聽value="濉叆鐢ㄦ埛鍚?/>
聽聽聽聽聽聽聽聽<property聽name="password"聽value="濉叆瀵嗙爜"/>
聽聽聽聽聽聽聽聽<property聽name="javaMailProperties">
聽聽聽聽聽聽聽聽聽聽聽聽<props>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<prop聽key="mail.smtp.auth">true</prop>
聽聽聽聽聽聽聽聽聽聽聽聽</props>
聽聽聽聽聽聽聽聽</property>
聽聽聽聽</bean>
聽聽聽聽<!--涓涓偖浠舵ā鏉?->
聽聽聽聽<bean聽id="mailMessage"聽class="org.springframework.mail.SimpleMailMessage">
聽聽聽聽聽聽聽聽<property聽name="to"聽value="asm_c_yuan@163.com"/>
聽聽聽聽聽聽聽聽<property聽name="from"聽value="asm_c_yuan@163.com"/>
聽聽聽聽聽聽聽聽<property聽name="subject"聽value="test"/>
聽聽聽聽</bean>
聽聽聽聽聽聽聽 <bean聽id="ms"聽class="com.open.quartz.MailService"聽autowire="byName"/>
聽聽聽聽<bean聽id="reportJob"
聽聽聽聽聽聽聽聽class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
聽聽聽聽聽聽聽聽<property聽name="targetObject"聽ref="ms"/>
聽聽聽聽聽聽聽聽<property聽name="targetMethod"聽value="sendMail"/>
聽聽聽聽</bean>
聽聽聽聽聽聽 <!--涓涓畝鍗曠殑璋冨害鍣?->
聽聽聽聽<bean聽id="simpleTrigger"
聽聽聽聽聽聽聽聽class="org.springframework.scheduling.quartz.SimpleTriggerBean">
聽聽聽聽聽聽聽聽<property聽name="jobDetail"聽ref="reportJob"/>
聽聽聽聽聽聽聽聽<property聽name="startDelay"聽value="1"/>聽聽 鍦╳eb鍚姩澶氬皯姣鍚庡惎鍔ㄤ換鍔?/span>
聽聽聽聽聽聽聽聽<property聽name="repeatInterval"聽value="100000000"/> 琛ㄧず娌¢殧澶氬皯姣鍚姩
聽聽聽聽</bean>
聽聽聽聽聽聽 <!--涓涓畾鏃剁殑璋冨害鍣?->
聽聽聽聽<bean聽id="cronTrigger"
聽聽聽聽聽聽聽聽class="org.springframework.scheduling.quartz.CronTriggerBean">
聽聽聽聽聽聽聽聽<property聽name="jobDetail"聽ref="reportJob"/>
聽聽聽聽聽聽聽聽<property聽name="cronExpression"聽value="0聽0聽6聽*聽*聽?"/> 鎸囨槑姣忓ぉ鏃╀笂6鐐瑰惎鍔ㄤ換鍔?琛ㄨ揪寮忕殑瑙i噴瑙佷笅綃囨枃绔?/span>
聽聽聽聽</bean>
聽聽聽聽<bean聽class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
聽聽聽聽聽聽聽聽<property聽name="triggers">
聽聽聽聽聽聽聽聽聽聽聽聽<list>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<ref聽bean="simpleTrigger"/>
聽聽聽聽聽聽聽聽聽聽聽聽</list>
聽聽聽聽聽聽聽聽</property>
聽聽聽聽</bean>
</bean> 娑夊強(qiáng)鐨刯ar鍖呮湁:spring.jar,javamail.jar,activation.jar,quartz.jar

]]> - spring瀵筳ava榪滅▼璋冪敤鐨勭畝鍖?涓?涔婬TTPinvoker http://www.tkk7.com/xfan/archive/2006/06/13/52463.html~灝廞~灝廞Tue, 13 Jun 2006 06:02:00 GMThttp://www.tkk7.com/xfan/archive/2006/06/13/52463.htmlhttp://www.tkk7.com/xfan/comments/52463.htmlhttp://www.tkk7.com/xfan/archive/2006/06/13/52463.html#Feedback2http://www.tkk7.com/xfan/comments/commentRss/52463.htmlhttp://www.tkk7.com/xfan/services/trackbacks/52463.html聽聽 spring鐨勭敤娉曡窡hessian,burlap涓鏍楓傛妸浠g悊綾伙紝鍜屾湇鍔¤緭鍑虹被鍒嗗埆鏀規(guī)垚
org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean
org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter
灝卞彲浠ヤ簡(jiǎn)錛屼笉鐢ㄦ敼浠g爜灝卞彲浠ヨ繍琛岀浜岃妭鐨勪緥瀛?img src ="http://www.tkk7.com/xfan/aggbug/52463.html" width = "1" height = "1" />
]]> - spring瀵筳ava榪滅▼璋冪敤鐨勭畝鍖?浜?涔婬essian,Burlaphttp://www.tkk7.com/xfan/archive/2006/06/13/52446.html~灝廞~灝廞Tue, 13 Jun 2006 05:19:00 GMThttp://www.tkk7.com/xfan/archive/2006/06/13/52446.htmlhttp://www.tkk7.com/xfan/comments/52446.htmlhttp://www.tkk7.com/xfan/archive/2006/06/13/52446.html#Feedback0http://www.tkk7.com/xfan/comments/commentRss/52446.htmlhttp://www.tkk7.com/xfan/services/trackbacks/52446.html聽聽聽聽聽聽聽Hessian鍍廟MI閭f牱錛屼嬌鐢ㄤ簩榪涘埗娑堟伅鏉ュ緩绔嬪鎴風(fēng)鍜屾湇鍔$涔嬮棿鐨勪氦嫻併備笌鍏朵粬浜岃繘鍒惰繙紼嬫妧鏈?鎯砇MI)涓嶅悓鐨勬槸錛屽畠鍙互縐繪鍒板叾浠栭潪Java鐨勮璦銆?br />聽聽聽聽聽 Burlap鏄竴縐嶅熀浜嶺ml鐨勮繙紼嬫妧鏈紝榪欎嬌寰椾粬鍙互縐繪鍒頒換浣曞彲浠ヨВ鏋怷ML鐨勮璦涓傛瘮璧稨essian錛屽畠鐨勫彲璇繪ф洿寮恒傚拰鍏朵粬鍩轟簬Xml鐨勮繙紼嬫妧鏈紙濡係OAP鍜孹ML-RPC錛変笉鍚岋紝瀹冪殑娑堟伅緇撴瀯灝藉彲鑳界畝鍗曪紝涓嶉渶瑕侀澶栫殑澶栭儴瀹氫箟璇█(濡俉SDL鎴朓DL).
聽閽堝鍓嶉潰鐨勪緥瀛愶紝鐪嬬湅spring瀵笻essian鍜孊urlap鏄庝箞綆鍖栥?br />1.Hessian
1)瀹㈡埛绔殑閰嶇疆錛屽彧闇瑕佷慨鏀筨ean_client.xml鐨勯厤緗?br />
<beans>
聽聽聽聽<!--瀹㈡埛绔?/span>-->
聽聽聽聽<bean聽id="pf" class="org.springframework.remoting.caucho.HessianProxyFactoryBean">
聽聽聽聽聽聽聽聽<property聽name="serviceUrl" 聽value="http://192.168.1.8:8080/spring/pay.service"/>
聽聽聽聽聽聽聽聽<property聽name="serviceInterface"聽value="com.open.rmi.ex2.PerfectTimeI"/>
聽聽聽聽</bean>
聽聽聽聽<bean聽id="test"聽class="com.open.rmi.ex2.DisplayPerfectTime">
聽聽聽聽聽聽聽聽<property聽name="pf"聽ref="pf"/>
聽聽聽聽</bean>
</beans> Hessian鍜孊urlap鏄熀浜嶩ttp鐨?http://192.168.1.8:8080/spring/pay.service鏄湇鍔$鐨勮闂湴鍧
2)鏈嶅姟绔殑閰嶇疆錛岃繖閲?/font>閲囩敤spring鐨刴vc
鍏堝湪web.xml涓鍔犱笅闈㈢殑閰嶇疆
<servlet>
聽聽聽聽聽聽聽聽<servlet-name>Dispatcher</servlet-name>
聽聽聽聽聽聽聽聽<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
聽聽聽聽<servlet-mapping>
聽聽聽聽聽聽聽聽<servlet-name>Dispatcher</servlet-name>
聽聽聽聽聽聽聽聽<url-pattern>*.service</url-pattern>
聽聽聽聽</servlet-mapping>
絎竴鑺備腑鐨刡ean_server.xml灝辨敼閰嶇疆Dispatcher-servlet.xml鏂囦歡涓簡(jiǎn)
<beans>
聽聽聽聽<bean聽id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
聽聽聽聽聽聽聽聽<property聽name="mappings">
聽聽聽聽聽聽聽聽聽聽聽聽<props>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<prop聽key="/pay.service">hessianService</prop>
聽聽聽聽聽聽聽聽聽聽聽聽</props>
聽聽聽聽聽聽聽聽</property>
聽聽聽聽</bean>
聽聽聽聽<bean聽id="hessianService"聽class="org.springframework.remoting.caucho.HessianServiceExporter">
聽聽聽聽聽聽聽聽<property聽name="service"聽ref="pt"/>
聽聽聽聽聽聽聽聽<property聽name="serviceInterface"聽value="com.open.rmi.ex2.PerfectTimeI"/>
聽聽聽聽</bean>
聽聽聽聽<bean聽id="pt"聽class="com.open.rmi.ex2.PerfectTime"/>
</bean> 璺熺涓鑺傜殑鐩告瘮鍙槸鏇存崲浜?jiǎn)浠g悊绫诲Q屽惎鍔╰omcat錛屽湪榪愯TestClient灝卞彲浠ョ湅鍒拌緭鍑虹粨鏋滀簡(jiǎn)
2.Burlap
鍙鎶奲ean_client.xml涓殑HessianProxyFactoryBean鏀規(guī)垚BurlapProxyFactoryBean,Dispatcher-servlet.xml涓殑HessianServiceExporter鏀規(guī)垚BurlapServiceExporter錛屽氨鍙互浜?jiǎn)銆?br />聽聽聽聽聽 閫氳繃涓婇潰鍙互鐪嬪埌錛屽簲鐢ㄤ粠綰疪MI杞崲鍒癏essian,Burlap鏄涔堝鏄撳晩!

]]> - spring瀵筳ava榪滅▼璋冪敤鐨勭畝鍖?涓)涔婻MIhttp://www.tkk7.com/xfan/archive/2006/06/12/52294.html~灝廞~灝廞Mon, 12 Jun 2006 15:15:00 GMThttp://www.tkk7.com/xfan/archive/2006/06/12/52294.htmlhttp://www.tkk7.com/xfan/comments/52294.htmlhttp://www.tkk7.com/xfan/archive/2006/06/12/52294.html#Feedback2http://www.tkk7.com/xfan/comments/commentRss/52294.htmlhttp://www.tkk7.com/xfan/services/trackbacks/52294.html1.榪滅▼鏂規(guī)硶璋冪敤錛圧MI錛?br />2.Caucho鐨凥essian鍜孊urlap
3.Spring鑷繁鐨凥TTP invoker
4.EJB
5.Web Services
涓.RMI
瀹冪敱5涓寘鍙?涓簲鐢ㄥ伐鍏風(fēng)粍鎴?br />java.rmi 緇勭粐瀹㈡埛绔殑RMI綾匯佹帴鍙e拰寮傚父
java.rmi.server 緇勭粐鏈嶅姟鍣ㄧ鐨凴MI綾?鎺ュ彛鍜屽紓甯?br />java.rmi.registry 緇勭粐鐢ㄤ簬綆$悊RMI鍛藉悕鏈嶅姟鐨勭被
java.rmi.dgc 緇勭粐鐢ㄤ簬綆$悊鍒嗗竷寮忓瀮鍦炬敹闆嗙殑綾?br />java.rmi.activation 緇勭粐鐢ㄤ簬瀹炵幇鎸夐渶嬋媧葷殑RMI鏈嶅姟鐨勭被
rmic 緙栬瘧鍣紝瀹冧駭鐢烺MI浣跨敤鐨勫瓨鏍瑰拰妗嗘灦浠ュ畬鎴愬垎甯冨紡閫氫俊
rmiregistry 涓涓負(fù)RMI鎻愪緵鍛藉悕鏈嶅姟鐨勬湇鍔″櫒錛岃繖欏規(guī)湇鍔℃妸鍚嶅瓧鍜屽璞″叧鑱斿湪涓璧?br />rmid 涓涓敮鎸丷MI嬋媧繪鏋剁殑鏈嶅姟鍣?br />
聽聽聽聽 濡傛灉鍏蜂綋榪樹笉鐭ラ亾浠涔堟槸RMI錛屽彲浠ュ弬鑰冭繖綃囬潪甯鎬笉閿欑殑鏂囩珷銆?a >JavaRMI鍏ラ棬瀹炴垬銆?br />娉ㄦ剰:
聽聽聽 1)瑕佹妸PerfectTime 鍜孭erfectTimeI綾諱腑鐨?br />聽聽 System.setSecurityManager(new RMISecurityManager()); 娉ㄩ噴鎺夛紙鍥犱負(fù)榪欓渶瑕侀厤瀹夊叏絳栫暐錛屾瘮杈冮夯鐑?chǔ)锛?jí)
聽聽聽2)榪樻湁鍦↗DK5涓嬶紝鐢╮mic -d鍛戒護(hù)鐨勮瘽鍙細(xì)杈撳嚭涓涓枃浠訛紝鍥犱負(fù)JDK5瀵筊MI榪涜浜?jiǎn)浼樺?br />鎺ヤ笅鏉ョ湅鐪嬬敤spring瀵廣?a >JavaRMI鍏ラ棬瀹炴垬銆嬩緥瀛愮殑綆鍖?br />1.瀹㈡埛绔殑閰嶇疆鍙?qiáng)浠g?br />PerfectTimeI鎺ュ彛錛堜笉鐢ㄧ戶鎵縥ava.rmi.Remote鎺ュ彛浜?jiǎn)锛屾櫘閫氱殑POJO錛?br />
package聽com.open.rmi.ex2;

public聽interface聽PerfectTimeI聽聽
{
聽聽聽聽long聽getPerfectTime();聽
} DisplayPerfectTime綾?涔熸槸涓涓櫘閫氱殑綾?
package聽com.open.rmi.ex2;

public聽class聽DisplayPerfectTime聽
{
聽聽聽聽private聽PerfectTimeI聽pf;

聽聽聽聽public聽void聽display()聽
{

聽聽聽聽聽聽聽聽for聽(int聽i聽=聽0;聽i聽<聽10;聽i++)聽
{
聽聽聽聽聽聽聽聽聽聽聽聽System.out.println("PerfectTime:"聽+聽pf.getPerfectTime());
聽聽聽聽聽聽聽聽}
聽聽聽聽}
聽聽聽聽//鐪佺暐浜?jiǎn)pf鐨刧et,set鏂規(guī)硶
} 瀹㈡埛绔厤緗産ean_client.xml
<beans>
聽聽聽聽<!--瀹㈡埛绔?/span>-->
聽聽聽聽<bean聽id="pf"聽class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
聽聽聽聽聽聽聽聽<property聽name="serviceUrl"聽value="rmi://192.168.1.8:1099/perfect_time"/>
聽聽聽聽聽聽聽聽<property聽name="serviceInterface"聽value="com.open.rmi.ex2.PerfectTimeI"/>
聽聽聽聽</bean>
聽聽聽聽<bean聽id="test"聽class="com.open.rmi.ex2.DisplayPerfectTime">
聽聽聽聽聽聽聽聽<property聽name="pf"聽ref="pf"/>
聽聽聽聽</bean>
</beans> 2.鏈嶅姟绔殑閰嶇疆鍙?qiáng)浠g?br />PerfectTime綾?鐖藉惂錛岀畝綆鍗曞崟鐨凱OJO)
package聽com.open.rmi.ex2;

public聽class聽PerfectTime聽聽implements聽PerfectTimeI聽
{

聽聽聽聽public聽long聽getPerfectTime()聽
{
聽聽聽聽聽聽聽聽return聽System.currentTimeMillis();
聽聽聽聽}
} 閰嶇疆bean_server.xml
<beans>
聽聽聽聽<!--鏈嶅姟绔?Spring璇誨彇瀹屽畾涔夋枃浠?鍦ㄧ敓鎴恠erviceExporter瀹炰緥鍚庯紝RMI鏈嶅姟灝變細(xì)鍚姩-->
聽聽聽聽<bean聽id="serviceExporter"
聽聽聽聽聽聽聽聽class="org.springframework.remoting.rmi.RmiServiceExporter">
聽聽聽聽聽聽聽聽<property聽name="service"聽ref="pt"/>
聽聽聽聽聽聽聽聽<property聽name="serviceName"聽value="perfect_time"/>
聽聽聽聽聽聽聽聽<property聽name="serviceInterface"聽value="com.open.rmi.ex2.PerfectTimeI"/>
聽聽聽聽</bean>
聽聽聽聽<bean聽id="pt"聽class="com.open.rmi.ex2.PerfectTime"/>
</beans> 3.嫻嬭瘯浠g爜
TestServer.java
package聽com.open.rmi.ex2;
import聽org.springframework.beans.factory.BeanFactory;
import聽org.springframework.context.support.ClassPathXmlApplicationContext;

public聽class聽TestServer聽
{

聽聽聽聽public聽static聽void聽main(String[]聽args)聽
{
聽聽聽聽聽聽聽聽BeanFactory聽bf=new聽ClassPathXmlApplicationContext("bean_server.xml");
聽聽聽聽聽聽聽聽bf.getBean("serviceExporter");
聽聽聽聽}
}

TestClient.java
package聽com.open.rmi.ex2;

import聽org.springframework.beans.factory.BeanFactory;
import聽org.springframework.context.support.ClassPathXmlApplicationContext;


public聽class聽TestClient聽
{

聽聽聽聽public聽static聽void聽main(String[]聽args)聽
{
聽聽聽聽聽聽聽聽BeanFactory聽bf聽=聽new聽ClassPathXmlApplicationContext("bean_client.xml");
聽聽聽聽聽聽聽聽DisplayPerfectTime聽test聽=聽(DisplayPerfectTime)bf.getBean("test");
聽聽聽聽聽聽聽聽test.display();
聽聽聽聽}
}

鍏堣繍琛孴estServer錛岃緭鍑?br />
RmiServiceExporter聽-聽Could聽not聽detect聽RMI聽registry聽-聽creating聽new聽one 鍦ㄨ繍琛孴estClient灝卞彲浠ョ湅鍒扮粨鏋滀簡(jiǎn)
PerfectTime:1150125107468
PerfectTime:1150125107484
PerfectTime:1150125107484



鐪嬪埌娌★紝浣犳牴鏈笉鐢ㄨ繍琛宺mic -d G:\RMI test.PerfectTime錛宻tart rmiregistry 銆?br />榪欏氨鏄痵pring鐨勯瓍鍔涘晩

]]> - spring涓簨鍔$殑灞炴?/title>http://www.tkk7.com/xfan/archive/2006/06/11/52064.html~灝廞~灝廞Sun, 11 Jun 2006 14:50:00 GMThttp://www.tkk7.com/xfan/archive/2006/06/11/52064.htmlhttp://www.tkk7.com/xfan/comments/52064.htmlhttp://www.tkk7.com/xfan/archive/2006/06/11/52064.html#Feedback0http://www.tkk7.com/xfan/comments/commentRss/52064.htmlhttp://www.tkk7.com/xfan/services/trackbacks/52064.html瀹氫箟浜?jiǎn)鍏充簬瀹㈡堬L(fēng)鍜岃璋冪敤鏂規(guī)硶鐨勪簨鍔¤竟鐣屻備紶鎾鍒欏氨鏄湪璇存槑鏂扮殑浜嬪姟鏄惁瑕佽鍚姩鎴栨槸鎸傝搗錛屾垨鑰呮柟娉曟槸鍚﹁鍦ㄤ簨鍔$幆澧冧腑榪愯銆?br />spring瀹氫箟浜?縐嶄笉鍚岀殑浼犳挱琛屼負(fù)銆?br />1)PROPAGATION_MANDATORY
聽聽 琛ㄦ槑鏂規(guī)硶蹇呴』瑕佸湪浜嬪姟涓繍琛屻傚鏋滀簨鍔′笉瀛樺湪錛屾姏鍑哄紓甯?br />2)PROPAGATION_NESTED
聽聽 琛ㄧず濡傛灉褰撳墠宸茬粡瀛樺湪涓涓簨鍔★紝鍒欒鏂規(guī)硶搴斿綋榪愯鍦ㄤ竴涓祵濂楃殑浜嬪姟涓傝宓屽鐨勪簨鍔″彲浠ヤ粠褰撳墠浜嬪姟涓崟鐙湴鎻愪氦鎴栧洖婊氥傚鏋滃綋鍓嶄簨鍔′笉瀛樺湪錛屽氨鐩稿綋浜嶱ROPAGATION_REQUIRED
3)PROPAGATION_NEVER
聽 琛ㄧず褰撳墠鐨勬柟娉曚笉搴旇榪愯鍦ㄤ竴涓簨鍔′笂涓嬫枃涓傚鏋滃綋鍓嶅瓨鍦ㄤ竴涓簨鍔★紝鍒欎細(xì)鎶涘嚭涓涓紓甯搞?br />4)PROPAGATION_NOT_SUPPORTED
琛ㄧず璇ユ柟娉曚笉搴旇鍦ㄤ簨鍔′腑榪愯銆傚鏋滀竴涓幇鏈夌殑浜嬪姟姝e湪榪愯涓傚畠?yōu)畣鍦ㄨ鏂规硶鐨剺q愯鏈熼棿琚寕璧?br />5)PROPAGATION_REQUIRED
琛ㄧず褰撳墠鏂規(guī)硶蹇呴』榪愯鍦ㄤ竴涓簨鍔′腑銆傚鏋滀竴涓幇鏈夌殑浜嬪姟姝e湪榪愯涓紝璇ユ柟娉曞皢榪愯鍦ㄨ繖涓簨鍔′腑銆傚惁鍒欑殑璇濓紝灝辮寮濮嬩竴涓柊鐨勪簨鍔°?br />6)PROPAGATION_REQUIRES_NEW
琛ㄧず褰撳墠鏂規(guī)硶蹇呴』榪愯鍦ㄥ畠鑷繁鐨勪簨鍔′腑銆傚鏋滀竴涓幇鏈変簨鍔″湪榪愯鐨勮瘽錛屽皢鍦ㄨ繖涓柟娉曡繍琛屾湡闂磋鎸傝搗銆?br />7)PROPAGATION_SUPPORTS
琛ㄧず褰撳墠鏂規(guī)硶涓嶉渶瑕佷簨鍔″鐞嗙幆澧冿紝浣嗗鏋滄湁涓涓簨鍔″凡緇忓湪榪愯鐨勮瘽錛岃繖涓柟娉曚篃鍙互鍦ㄨ繖涓簨鍔′腑榪愯
2.闅旂綰у埆
澶氫釜浜嬪姟騫跺彂榪愯鐨勫叧緋匯傚洜涓哄茍鍙戜細(xì)瀵艱嚧浠ヤ笅闂
.鑴忚(Dirty read) 涓涓簨鍔¤鍙栦簡(jiǎn)琚彟涓涓簨鍔℃敼鍐欎絾榪樻病鎻愪氦鐨勬暟鎹?br />.涓嶅彲閲嶅璇?Nonrepeatable read) 涓涓簨鍔℃墽琛岀浉鍚岀殑鏌ヨ涓ゆ鎴栦袱嬈′互涓婏紝浣嗘瘡嬈℃煡璇㈢粨鏋滈兘涓嶅悓鏃躲傝繖鐢變簬鍙︿竴涓茍鍙戜簨鍔″湪涓ゆ鏌ヨ涔嬮棿鏇存柊浜?jiǎn)鏁版?br />.騫昏(Phantom read)
褰撲竴涓簨鍔¤鍙栧嚑琛岃褰曞悗錛屽彟涓涓茍鍙戜簨鍔℃彃鍏ヤ竴浜涜褰曪紝灝卞彂鐢熶簡(jiǎn)騫昏
spring瀹氫箟浜?jiǎn)浠ヤ?縐嶉殧紱誨叧緋?br />1)ISOLATION_DEFAULT
浣跨敤鍚庣鏁版嵁搴撻粯璁ゅ緱闅旂綰у埆
2)ISOLATION_READ_UNCOMMITTED
鍏佽浣犺鍙栬繕鏈彁浜ょ殑鏀瑰彉浜?jiǎn)鐨勬暟鎹傚彲鑳藉鑷磋剰璇伙紝涓嶅彲閲嶅璇伙紝騫昏
3)ISOLATION_READ_COMMITTTED
榪愯鍦ㄥ茍鍙戜簨鍔″凡緇忔彁浠峰悗璇誨彇銆傚彲闃叉鑴忚錛屼絾涓嶅彲閲嶅璇伙紝騫昏閮芥湁鍙兘鍙戠敓
4)ISOLATION_REPEATABLE_READ
瀵圭浉鍚屽瓧孌電殑澶氭璇誨彇緇撴灉鏄竴鑷寸殑錛岄櫎闈炴暟鎹浜嬪姟鏈韓銆傚彲闃叉鑴忚錛屼笉鍙噸澶嶈錛屼絾騫昏浠嶅彲鑳藉彂鐢熴?br />5)ISOLATION_SERIALIZABLE
瀹屽叏鏈嶄粠ACID鐨勯殧紱葷駭鍒紝紜繚涓嶅彂鐢熻剰璇伙紝涓嶅彲閲嶅璇伙紝騫昏銆傚畠鐨勫吀鍨嬪仛娉曞氨鏄畬鍏ㄩ攣瀹氬湪浜嬪姟涓秹鍙?qiáng)鐨勬暟鎹〃銆傚洜姝ゅ畠鏄渶鎱㈠湴銆?br />3.鍙鎻愮ず
閫氳繃鍙灞炴э紝鏁版嵁搴撳彲浠ュ浜嬪姟榪涜浼樺寲銆?br />4.浜嬪姟瓚呮椂鏃墮棿
璁劇疆浜?jiǎn)鐨勮瘽锛屼簨鍔″湪瓒厴q囪繖涓椂闂村悗灝辮嚜鍔ㄥ洖婊氥傞伩鍏嶅崰鐢ㄨ祫婧愯繃涔呫?img src ="http://www.tkk7.com/xfan/aggbug/52064.html" width = "1" height = "1" />
]]> - 浜嬪姟鐨勭壒鐐逛互鍙?qiáng)spring鎻愪緵浜嬪姟綆$悊鍣ㄧ殑綆浠?/title>http://www.tkk7.com/xfan/archive/2006/06/10/51839.html~灝廞~灝廞Sat, 10 Jun 2006 06:02:00 GMThttp://www.tkk7.com/xfan/archive/2006/06/10/51839.htmlhttp://www.tkk7.com/xfan/comments/51839.htmlhttp://www.tkk7.com/xfan/archive/2006/06/10/51839.html#Feedback0http://www.tkk7.com/xfan/comments/commentRss/51839.htmlhttp://www.tkk7.com/xfan/services/trackbacks/51839.html1)鍘熷瓙鎬?Atomic)
浜嬪姟鐢變竴涓垨澶氫釜琛屼負(fù)緇戝湪涓璧風(fēng)粍鎴愮殑錛屽ソ鍍忎竴涓崟鐙殑宸ヤ綔鍗曞厓銆備簨鍔′腑鐨勬搷浣滆涔堥兘鍙戠敓錛岃涔堥兘涓嶅彂鐢熴?br />2)涓鑷存?Consistent)涓鏃︿竴涓簨鍔$粨鏉熶簡(jiǎn)(涓嶇鎴愬姛涓庡惁)錛岀郴緇熸墍澶勭殑鐘舵佸拰瀹冪殑涓氬姟瑙勫垯鏄竴鑷寸殑銆?br />3)闅旂鎬?Isolated)浜嬪姟搴旇鍏佽澶氫釜鐢ㄦ埛鎿嶄綔鍚屼竴涓暟鎹紝涓涓敤鎴風(fēng)殑鎿嶄綔涓嶄細(xì)鍜屽叾浠栫敤鎴風(fēng)殑鎿嶄綔鐩告販嫻娿?br />4)鎸佷箙鎬?Durable)涓鏃︿簨鍔″畬鎴愶紝浜嬪姟鐨勭粨鏋滃簲璇ユ寔涔呭寲銆?br />
spring鎻愪緵浜?jiǎn)浠ヤ笅浜嬪姟绠$悊鍣?br />1)DataSourceTransactionManager聽聽聽聽聽聽鍦ㄥ崟涓鐨凧DBC DataSource涓鐞嗕簨鍔?br />2)HibernateTransactionManager 褰撴寔涔呭寲鏈哄埗鏄疕ibernate鏃訛紝鐢ㄥ畠鏉ョ鐞嗕簨鍔?br />3)JdoTransactionManager 褰撴寔涔呭寲鏈哄埗鏃禞DO鏃訛紝鐢ㄥ畠鏉ョ鐞嗕簨鍔?br />4)JtaTransactionManager浣跨敤涓涓狫TA瀹炶鏉ョ鐞嗕簨鍔°傚綋涓涓簨鍔¤法瓚婂涓祫婧愭椂聽聽聽聽 蹇呴』浣跨敤
5)PersistenceBrokerTransactionManager褰揂pache鐨凮JB鐢ㄤ綔鎸佷箙鍖栨椂錛岀敤瀹冩潵綆$悊浜嬪姟
6)TopLinkTransactionManager褰搊racle鐨凾opLink鐢ㄤ綔鎸佷箙鍖栨椂錛岀敤瀹冩潵綆$悊浜嬪姟
7)JmsTransactionManager鐢ㄥ畠鏉ョ鐞咼MS鐨勪簨鍔?br />

]]> - ProxyFactoryBean灞炴т粙緇?/title>http://www.tkk7.com/xfan/archive/2006/06/10/51794.html~灝廞~灝廞Sat, 10 Jun 2006 03:15:00 GMThttp://www.tkk7.com/xfan/archive/2006/06/10/51794.htmlhttp://www.tkk7.com/xfan/comments/51794.htmlhttp://www.tkk7.com/xfan/archive/2006/06/10/51794.html#Feedback1http://www.tkk7.com/xfan/comments/commentRss/51794.htmlhttp://www.tkk7.com/xfan/services/trackbacks/51794.htmltarget:浠g悊鐨勭洰鏍囩被
proxyInterfaces:浠g悊綾誨簲璇ュ疄鐜扮殑鎺ュ彛鍒楄〃
interceptorNames:闇瑕佸簲鐢ㄥ埌鐩爣瀵硅薄涓婄殑閫氱煡Bean鐨勫悕瀛?鍙互鏄嫤鎴櫒,advisor鍜屽叾浠栭氱煡綾誨瀷鐨勫悕瀛椼傝繖涓睘鎬у繀欏繪寜鐓у湪BeanFactory涓殑欏哄簭璁劇疆
singleton:
aopProxyFactory:浣跨敤鐨凱roxyFactoryBean瀹炵幇銆係pring甯︽湁涓ょ瀹炵幇(JDK鍔ㄦ佷唬鐞嗗拰CGLIB)銆傞氬父涓嶉渶瑕佷嬌鐢ㄨ繖涓睘鎬?br />exposeProxy:鐩爣瀵硅薄鏄惁闇瑕佸緱鍒板綋鍓嶇殑浠g悊銆傞氳繃璋冪敤AopContext.getCurrentProxy瀹炵幇銆?br />frozen:涓鏃﹀伐鍘傝鍒涘緩錛屾槸鍚﹀彲浠ヤ慨鏀逛唬鐞嗙殑閫氱煡銆傚綋璁劇疆涓簍rue鏃訛紝鍦ㄨ繍琛屾椂灝變笉鑳戒慨鏀筆roxyFactoryBean浜?jiǎn)銆傞氬父涓嶉渶瑕佷嬌鐢ㄨ繖涓睘鎬с?br />optimize錛氭槸鍚﹀鍒涘緩鐨勪唬鐞嗚繘琛屼紭鍖?鍙傜敤浜嶤GLIB)
ProxyTargetClass錛氭槸鍚︿唬鐞嗙洰鏍囩被錛岃屼笉鏄疄鐜版帴鍙c傚彧鑳藉湪浣跨敤CGLIB鏃朵嬌鐢?br />

]]> - spring涓熀紜鏍稿績(jī)鎺ュ彛浠嬬粛http://www.tkk7.com/xfan/archive/2006/06/09/51654.html~灝廞~灝廞Fri, 09 Jun 2006 03:56:00 GMThttp://www.tkk7.com/xfan/archive/2006/06/09/51654.htmlhttp://www.tkk7.com/xfan/comments/51654.htmlhttp://www.tkk7.com/xfan/archive/2006/06/09/51654.html#Feedback0http://www.tkk7.com/xfan/comments/commentRss/51654.htmlhttp://www.tkk7.com/xfan/services/trackbacks/51654.htmlspring涓熀紜鏍稿績(jī)鎺ュ彛鎬葷粨
鐞嗚В榪欏嚑涓帴鍙o紝鍙?qiáng)鍏跺疄鐜熬c誨氨鍙互蹇熶簡(jiǎn)瑙pring,鍏蜂綋鐨勭敤娉曞弬鑰冨叾浠杝pring璧勬枡
1.BeanFactory鏈鍩虹鏈鏍稿績(jī)鐨勬帴鍙?br />閲嶈鐨勫疄鐜扮被鏈夛細(xì)
XmlBeanFactory,浠ュ強(qiáng)ApplicationContext鎺ュ彛涓嬬殑綾?/p>
2.Resource鎺ュ彛,鍙互閫氱敤鍦拌闂枃浠惰祫婧?br />1)ClassPathResource:璇誨彇寰楀艦寮忎負(fù)"classpath:ApplicationContext.xml"
2)FileStstemResource:璇誨彇寰楀艦寮忎負(fù)"file:c:\spring\src\ApplicationContext.xml"
3)ServletContextResource:璇誨彇寰楀艦寮忎負(fù)"WEB-INF\ApplicationContext.xml"
//ResourceLoader綾葷敤浜庤澆鍏esource
3.FactoryBean宸ュ巶bean
瀹冩湰韜湪bean factory涓畾涔夛紝鍚屾椂鍙堟槸鐢ㄤ簬鍒涘緩鐩爣bean鐨勫伐鍘?br />spring鏈変互涓嬪疄鐜?
1)JndiObjectFactoryBean:閫氳繃JNDI鏌ユ壘鑾峰彇瀵硅薄
2)LocalSessionFactoryBean:鐢ㄤ簬鍦ㄦ湰鍦拌閰岺ibernate SessionFactory
3)LocalSessionFactoryBean:鐢ㄤ簬鍦ㄦ湰鍦拌閰岼DO PersistenceManagerFactory
4)ProxyFactoryBean:鐢ㄤ簬鑾峰彇AOP鐨勪唬鐞?br />5)TransactionProxyFactoryBean:鐢ㄤ簬涓哄璞″垱寤轟簨鍔′唬鐞嗭紝鐢ㄤ簬瀹炵幇綆鎹鋒槗鐢ㄧ殑澹版槑鎬т簨鍔′唬鐞?br />6)RmiProxyFactoryBean:涓洪氳繃RMI璁塊棶鐨勮繙紼嬪璞″垱寤轟竴涓唬鐞?/p>
4.ApplicationContext鍔犲己浜?jiǎn)BeanFactory鐨勫姛鑳斤紝鏀寔浠ヤ笅鍔熻兘
1)鍥介檯鍖栨敮鎸?br />2)璧勬簮璁塊棶
3)浜嬩歡鐩戝惉鏈哄埗
瀹冪殑閲嶈鐨勫疄鐜扮被鏈夛細(xì)
FileSystemXmlApplicationContext,ClassPathXmlApplication,XmlWebApplicationContext
5.Bean鐢熷懡鍛ㄦ湡鐨勫洖璋冩帴鍙?br />BeanFactoryPostProcessor,InitializingBean,DisposableBean,BeanFactoryAware,ApplicationContextAware,ResourceLoader,BeanPostProcessor
6.MessageSource鎺ュ彛
瀹冪殑瀹炵幇綾繪湁ResourceBundleMessageSource,ReloadableResourceBundleMessageSource.鍚庤呭湪灞炴ф枃浠朵慨鏀瑰悗浼?xì)閲嶆柊铦插?/p>
鏆傛椂浠嬬粛榪欏嚑涓?/p>

]]>- 鏈綆鍗曠殑鍔ㄦ佷唬鐞嗗疄渚?spring鍩轟簬鎺ュ彛浠g悊鐨凙OP鍘熺悊)http://www.tkk7.com/xfan/archive/2006/06/09/51628.html~灝廞~灝廞Fri, 09 Jun 2006 02:20:00 GMThttp://www.tkk7.com/xfan/archive/2006/06/09/51628.htmlhttp://www.tkk7.com/xfan/comments/51628.htmlhttp://www.tkk7.com/xfan/archive/2006/06/09/51628.html#Feedback1http://www.tkk7.com/xfan/comments/commentRss/51628.htmlhttp://www.tkk7.com/xfan/services/trackbacks/51628.htmlJDK鐨勫姩鎬佷唬鐞嗘槸鍩轟簬鎺ュ彛鐨?br />
package
聽com.open.aop;

public
聽
interface
聽BusinessInterface聽
{
聽聽聽聽
public
聽
void
聽processBusiness();
}
鐩爣瀵硅薄
package聽com.open.aop;

public聽class聽BusinessObject聽implements聽BusinessInterface聽
{

聽聽聽聽public聽void聽processBusiness()聽
{
聽聽聽聽聽聽聽聽System.out.println("action");
聽聽聽聽}
}

浠g悊瀵硅薄
package聽com.open.aop;
import聽java.lang.reflect.InvocationHandler;
import聽java.lang.reflect.Method;
import聽java.lang.reflect.Proxy;

public聽class聽LogHandler聽implements聽I(yíng)nvocationHandler聽
{
聽聽聽聽private聽Object聽delegate;

聽聽聽聽public聽Object聽binder(Object聽delegate)聽
{
聽聽聽聽聽聽聽聽this.delegate=delegate;
聽聽聽聽聽聽聽聽return聽Proxy.newProxyInstance(delegate.getClass().getClassLoader(),
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽delegate.getClass().getInterfaces(),this);
聽聽聽聽}
聽聽聽聽public聽Object聽invoke(Object聽proxy,聽Method聽method,聽Object[]聽args)

聽聽聽聽聽聽聽聽聽聽聽聽throws聽Throwable聽
{
聽聽聽聽聽聽聽聽Object聽obj聽=聽null;
聽聽聽聽聽聽聽聽System.out.println("瀵硅薄鏂規(guī)硶璋冪敤鍓?/span>");

聽聽聽聽聽聽聽聽try聽
{
聽聽聽聽聽聽聽聽聽聽聽聽obj聽=聽method.invoke(delegate,聽args);

聽聽聽聽聽聽聽聽}聽catch聽(Exception聽e)聽
{
聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽System.out.println("瀵硅薄鏂規(guī)硶璋冪敤鍚?/span>");聽
聽聽聽聽聽聽聽聽return聽obj;
聽聽聽聽}
} 嫻嬭瘯綾?
package聽com.open.aop;
import聽java.lang.reflect.InvocationHandler;
import聽java.lang.reflect.Proxy;

public聽class聽Test聽
{

聽聽聽聽public聽static聽void聽main(String[]聽args)聽
{
聽聽聽聽聽聽聽聽BusinessInterface聽bi聽=聽(BusinessInterface)聽new聽LogHandler()
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽.binder(new聽BusinessObject());
聽聽聽聽聽聽聽聽bi.processBusiness();
聽聽聽聽}
} 杈撳嚭緇撴灉
瀵硅薄鏂規(guī)硶璋冪敤鍓?br />
action
瀵硅薄鏂規(guī)硶璋冪敤鍚?/span>
]]> - spring澶嶆潅灞炴х殑閰嶇疆http://www.tkk7.com/xfan/archive/2006/06/08/51303.html~灝廞~灝廞Thu, 08 Jun 2006 04:48:00 GMThttp://www.tkk7.com/xfan/archive/2006/06/08/51303.htmlhttp://www.tkk7.com/xfan/comments/51303.htmlhttp://www.tkk7.com/xfan/archive/2006/06/08/51303.html#Feedback0http://www.tkk7.com/xfan/comments/commentRss/51303.htmlhttp://www.tkk7.com/xfan/services/trackbacks/51303.html
package
聽com.open.bean;
import
聽java.util.List;
import
聽java.util.Map;
import
聽java.util.Properties;

public
聽
class
聽BeanSet聽
{
聽聽聽聽
private
聽String[]聽str1;
聽聽聽聽
private
聽String[]聽str2;
聽聽聽聽
private
聽List聽lst;
聽聽聽聽
private
聽Map聽map;
聽聽聽聽
private
聽Properties聽props;
聽聽聽聽
private
聽ChildBean[]聽child;
聽聽聽
//
鐪佺暐set,get鏂規(guī)硶
}
package
聽com.open.bean;

public
聽
class
聽ChildBean
{}
閰嶇疆鏂囦歡
<beans>
<bean聽id="bs"聽class="com.open.bean.BeanSet">
聽聽聽聽聽聽聽聽<property聽name="str1">
聽聽聽聽聽聽聽聽聽聽聽聽<list>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<value>value1</value>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<value>value2</value>
聽聽聽聽聽聽聽聽聽聽聽聽</list>
聽聽聽聽聽聽聽聽</property>
聽聽聽聽聽聽聽聽<property聽name="str2">
聽聽聽聽聽聽聽聽聽聽聽聽<value>value3,value4</value>
聽聽聽聽聽聽聽聽</property>
聽聽聽聽聽聽聽聽<property聽name="lst">
聽聽聽聽聽聽聽聽聽聽聽聽<list>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<value>value5</value>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<ref聽bean="cc1"/>
聽聽聽聽聽聽聽聽聽聽聽聽</list>
聽聽聽聽聽聽聽聽</property>
聽聽聽聽聽聽聽聽<property聽name="map">
聽聽聽聽聽聽聽聽聽聽聽聽<map>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<entry聽key="key1">
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<value>xxx</value>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽</entry>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<entry聽key="key2">
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<ref聽bean="cc1"/>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽</entry>
聽聽聽聽聽聽聽聽聽聽聽聽</map>
聽聽聽聽聽聽聽聽</property>
聽聽聽聽聽聽聽聽<property聽name="props">
聽聽聽聽聽聽聽聽聽聽聽聽<props>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<prop聽key="key1">xxx</prop>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<prop聽key="key2">yyy</prop>
聽聽聽聽聽聽聽聽聽聽聽聽</props>
聽聽聽聽聽聽聽聽</property>
聽聽聽聽聽聽聽聽<property聽name="child">
聽聽聽聽聽聽聽聽聽聽聽聽<list>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<ref聽bean="cc1"/>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<ref聽bean="cc2"/>
聽聽聽聽聽聽聽聽聽聽聽聽</list>
聽聽聽聽聽聽聽聽</property>
聽聽聽聽</bean>
聽聽聽聽<bean聽id="cc1"聽class="com.open.bean.ChildBean"/>
聽聽聽聽<bean聽id="cc2"聽class="com.open.bean.ChildBean"/>
</beans> 嫻嬭瘯浠g爜
package聽com.open.bean;
import聽java.util.List;
import聽java.util.Map;
import聽java.util.Properties;
import聽org.springframework.context.support.ClassPathXmlApplicationContext;

public聽class聽Test1聽
{

聽聽聽聽public聽static聽void聽main(String[]聽args)聽
{
聽聽聽聽聽聽聽聽ClassPathXmlApplicationContext聽cx=
聽聽聽聽聽聽聽聽聽聽聽聽new聽ClassPathXmlApplicationContext("bean.xml");
聽聽聽聽聽聽聽聽BeanSet聽bs=(BeanSet)cx.getBean("bs");
聽聽聽聽聽聽聽聽String[]聽str1=bs.getStr1();
聽聽聽聽聽聽聽聽String[]聽str2=bs.getStr1();
聽聽聽聽聽聽聽聽List聽lst=bs.getLst();
聽聽聽聽聽聽聽聽Map聽map=bs.getMap();
聽聽聽聽聽聽聽聽Properties聽props=bs.getProps();
聽聽聽聽聽聽聽聽ChildBean[]聽cb=bs.getChild();
聽聽聽聽聽聽聽聽System.out.println("str1="+"["+str1[0]+","+str1[1]+"]");
聽聽聽聽聽聽聽聽System.out.println("str2="+"["+str2[0]+","+str2[1]+"]");
聽聽聽聽聽聽聽聽System.out.println("lst="+lst);
聽聽聽聽聽聽聽聽System.out.println("map="+map);
聽聽聽聽聽聽聽聽System.out.println("props="+props);
聽聽聽聽聽聽聽聽System.out.println("cb="+"["+cb[0]+","+cb[1]+"]");
聽聽聽聽}
} 杈撳嚭緇撴灉
str1=[value1,value2]
str2=[value1,value2]
lst=[value5,聽com.open.bean.ChildBean@1df073d]

map=
{key1=xxx,聽key2=com.open.bean.ChildBean@1df073d}

props=
{key2=yyy,聽key1=xxx}
cb=[com.open.bean.ChildBean@1df073d,com.open.bean.ChildBean@1546e25]
]]> - Spring鍔犺澆澶氫釜閰嶇疆鏂囦歡http://www.tkk7.com/xfan/archive/2006/06/07/51061.html~灝廞~灝廞Wed, 07 Jun 2006 03:13:00 GMThttp://www.tkk7.com/xfan/archive/2006/06/07/51061.htmlhttp://www.tkk7.com/xfan/comments/51061.htmlhttp://www.tkk7.com/xfan/archive/2006/06/07/51061.html#Feedback0http://www.tkk7.com/xfan/comments/commentRss/51061.htmlhttp://www.tkk7.com/xfan/services/trackbacks/51061.html

ApplicationContext聽act=new聽ClassPathXmlApplicationContext(new聽String[]聽
{"bean1.xml","bean2.xml"});
聽聽聽聽 瀵逛簬BeanFactory
BeanDefinitionRegistry聽reg聽=聽new聽DefaultListableBeanFactory();
XmlBeanDefinitionReader聽reader聽=聽new聽XmlBeanDefinitionReader(reg);
reader.loadBeanDefinitions(new聽ClassPathResource("bean1.xml"));
reader.loadBeanDefinitions(new聽ClassPathResource("bean2.xml"));
BeanFactory聽bf=(BeanFactory)reg;

]]> - spring濡備綍寮曠敤properties鏂囦歡閲岀殑閰嶇疆http://www.tkk7.com/xfan/archive/2006/06/07/51006.html~灝廞~灝廞Tue, 06 Jun 2006 18:40:00 GMThttp://www.tkk7.com/xfan/archive/2006/06/07/51006.htmlhttp://www.tkk7.com/xfan/comments/51006.htmlhttp://www.tkk7.com/xfan/archive/2006/06/07/51006.html#Feedback0http://www.tkk7.com/xfan/comments/commentRss/51006.htmlhttp://www.tkk7.com/xfan/services/trackbacks/51006.html瀹冩槸鎶婂睘鎬т腑鐨勫畾涔夌殑鍙橀噺(var)鏇夸唬,spring鐨勯厤緗枃浠朵腑浣跨敤${var}鐨勫崰浣嶇
<beans>
<bean聽id="configBean"聽class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
聽聽聽聽聽聽聽聽聽聽 <property聽name="location"><value>db.properties</value></property>
</bean>聽
<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>
</beans> db.properties鏂囦歡
jdbc.driverClassName=org.hsqldb.jdbcDriver
jdbc.url=jdbc:hsqldb:hsql://production:9002
jdbc.username=sa
jdbc.password=root 2.PropertyOverrideConfigurer綾?br />璺烶ropertyPlaceholderConfigurer鍔熻兘涓鏍鳳紝涓嶈繃鐢ㄦ硶涓嶄竴鏍?涓嶇敤鍗犱綅絎︼紝鍦ㄥ睘鎬ф枃浠朵腑
鐩存帴瀹氫箟灞炴х殑鍊鹼紝榪欐牱灝卞厑璁告湁榛樿鍊?br />
<beans>
<bean聽id="configBean"聽class="org.springframework.beans.factory.config.PropertyOverrideConfigurer">
聽聽聽聽聽聽聽聽聽聽聽<property聽name="location"><value>db.properties</value></property>
</bean>聽
<bean聽id="dataSource"聽class="org.apache.commons.dbcp.BasicDataSource"聽destroy-method="close">
聽聽聽聽<property聽name="driverClassName"><value>org.hsqldb.jdbcDriver</value></property>
聽聽聽聽<property聽name="url"><value>jdbc:hsqldb:hsql://production:9002</value></property>
聽聽聽聽<property聽name="username"><value>test</value></property>
聽聽聽聽<property聽name="password"><value>123456</value></property>
</bean>
</beans> db.properties鏂囦歡
dataSource.username=admin
dataSource.password=9527 鍦╞ean瀹炰緥鏃訛紝admin,9527灝嗘浛浠est,123456
3鍏朵粬
1)濡傛灉闇瑕佸紩鐢ㄥ涓睘鎬э紝灝?font color="#0000ff">configBean灞炴ф敼涓?br />
<property聽name="locations">
<list>
<value>db.properties</value>
<value>db1.properties</value>
</list>
</property> 2)鍦ˋpplactionContext涓槸鑷姩璋冪敤BeanFactoryPostProcessor鎺ュ彛鐨勶紝濡傛灉瑕佸湪BeanFactory涓嬌鐢紝蹇呴』鎵嬪姩娣誨姞:
XmlBeanFactory聽factory聽=聽new聽XmlBeanFactory(new聽FileSystemResource("beans.xml"));
PropertyPlaceholderConfigurer聽cfg聽=聽new聽PropertyPlaceholderConfigurer();
cfg.setLocation(new聽FileSystemResource("jdbc.properties"));
cfg.postProcessBeanFactory(factory);


]]> - spring涓嚜瀹氫箟灞炴х紪杈戝櫒http://www.tkk7.com/xfan/archive/2006/06/06/50920.html~灝廞~灝廞Tue, 06 Jun 2006 13:48:00 GMThttp://www.tkk7.com/xfan/archive/2006/06/06/50920.htmlhttp://www.tkk7.com/xfan/comments/50920.htmlhttp://www.tkk7.com/xfan/archive/2006/06/06/50920.html#Feedback0http://www.tkk7.com/xfan/comments/commentRss/50920.htmlhttp://www.tkk7.com/xfan/services/trackbacks/50920.html渚嬪瓙:
Person綾?br />
package聽com.open.bean;

public聽class聽Person聽
{
聽聽聽聽PhoneNumber聽phoneNumber;
聽聽聽聽//set,get鏂規(guī)硶鐪佺暐
} PhoneNumber綾?br />
package聽com.open.bean;

public聽class聽PhoneNumber聽
{
聽聽聽聽private聽String聽areaCode;
聽聽聽聽private聽String聽number;

聽聽聽聽public聽PhoneNumber(String聽areaCode,String聽number聽)聽
{
聽聽聽聽聽聽聽聽this.areaCode=areaCode;
聽聽聽聽聽聽聽聽this.number=number;
聽聽聽聽}
聽聽聽聽//set,get鏂規(guī)硶鐪佺暐
} 鑷畾涔夊睘鎬у櫒PhoneEditor
package聽com.open.bean;
import聽java.beans.PropertyEditorSupport;

public聽class聽PhoneEditor聽extends聽PropertyEditorSupport聽
{

聽聽聽聽public聽void聽setAsText(String聽textValue)聽throws聽I(yíng)llegalArgumentException聽
{
聽聽聽聽聽聽聽聽String聽[]str=textValue.split("-");

聽聽聽聽聽聽聽聽if(str!=null&&str.length==2)聽
{
聽聽聽聽聽聽聽聽聽聽聽聽PhoneNumber聽pn=new聽PhoneNumber(str[0],str[1]);
聽聽聽聽聽聽聽聽聽聽聽聽setValue(pn);

聽聽聽聽聽聽聽聽}else聽
{
聽聽聽聽聽聽聽聽聽聽聽聽setValue(new聽PhoneNumber("0000","0000000"));
聽聽聽聽聽聽聽聽}聽聽聽聽
聽聽聽聽}
}
鍒╃敤PhoneEdior錛屽湪xml鏂囦歡涓氨鍙互榪欎箞閰嶇疆Person綾諱簡(jiǎn)
<beans><!--娉ㄥ唽緙栬緫鍣?/span>-->
聽聽聽聽<bean聽id="customEditorConfigurer"聽
聽聽聽聽聽聽聽聽class="org.springframework.beans.factory.config.CustomEditorConfigurer">
聽聽聽聽聽聽聽聽<property聽name="customEditors">
聽聽聽聽聽聽聽聽聽聽聽聽<map>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<entry聽key="com.open.bean.PhoneNumber">
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<bean聽id="phoneEditor"聽class="com.open.bean.PhoneEditor"/>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽</entry>
聽聽聽聽聽聽聽聽聽聽聽聽</map>
聽聽聽聽聽聽聽聽</property>
聽聽聽聽</bean>
聽聽聽聽<bean聽id="person"聽class="com.open.bean.Person">
聽聽聽聽聽聽聽聽<property聽name="phoneNumber"聽value="0731-8888888"/>
聽聽聽聽</bean>
</beans>
spring榛樿鎻愪緵浠ヤ笅灞炴х紪杈戝櫒錛屼笉鐢ㄦ敞鍐?br />ClassEditor聽 浣跨敤鍖呭惈鍏ㄧО鍚嶇殑瀛楃涓茶緗甹ava.lang.Class灞炴?br />CustomDateEditor聽 浣跨敤鏌愮java.text.DateFormat瀵硅薄灝嗕竴涓瓧絎︿覆璁劇疆緇檍ava.util.Date灞炴?br />FileEditor聽 浣跨敤鍖呭惈鏂囦歡璺緞鐨勫瓧絎︿覆璁劇疆java.io.File灞炴?br />LocalEditor聽 璁劇疆java.util.Local灞炴?br />StringArrayPropertyEditor聽 灝嗕竴涓寘鍚楀彿鐨凷tring杞寲鎴怱tring鏁扮粍
StringTrimmerEditor聽 鑷姩淇瀛楃涓插睘鎬э紝鍙互閫夋嫨灝嗙┖瀛楃杞彉鎴恘ull
]]> - spring涓瑽ean鐨勭敓鍛藉懆鏈?/title>http://www.tkk7.com/xfan/archive/2006/06/06/50883.html~灝廞~灝廞Tue, 06 Jun 2006 11:56:00 GMThttp://www.tkk7.com/xfan/archive/2006/06/06/50883.htmlhttp://www.tkk7.com/xfan/comments/50883.htmlhttp://www.tkk7.com/xfan/archive/2006/06/06/50883.html#Feedback3http://www.tkk7.com/xfan/comments/commentRss/50883.htmlhttp://www.tkk7.com/xfan/services/trackbacks/50883.htmlLife綾?
package聽com.open.bean;
import聽org.springframework.beans.BeansException;
import聽org.springframework.beans.factory.BeanFactory;
import聽org.springframework.beans.factory.BeanFactoryAware;
import聽org.springframework.beans.factory.BeanNameAware;
import聽org.springframework.beans.factory.DisposableBean;
import聽org.springframework.beans.factory.InitializingBean;
public聽class聽Life聽implements聽BeanFactoryAware,聽BeanNameAware,

聽聽聽聽聽聽聽聽I(yíng)nitializingBean,聽DisposableBean聽
{
聽聽聽聽private聽String聽msg;

聽聽聽聽public聽Life()聽
{
聽聽聽聽聽聽聽聽System.out.println("msg="+msg);
聽聽聽聽聽聽聽聽System.out.println("鏋勯犲嚱鏁?/span>");
聽聽聽聽}

聽聽聽聽public聽void聽setBeanFactory(BeanFactory聽beanFactory)聽throws聽BeansException聽
{
聽聽聽聽聽聽聽聽System.out.println("setBeanFactory");
聽聽聽聽}

聽聽聽聽public聽void聽setBeanName(String聽name)聽
{
聽聽聽聽聽聽聽聽System.out.println("setBeanName");
聽聽聽聽}

聽聽聽聽public聽void聽init()聽
{
聽聽聽聽聽聽聽聽System.out.println("鍒濆鍖?/span>");
聽聽聽聽}
聽聽聽聽public聽Object聽postProcessBeforeInitialization(Object聽bean,聽String聽beanName)

聽聽聽聽聽聽聽聽聽聽聽聽throws聽BeansException聽
{
聽聽聽聽聽聽聽聽System.out.println("postProcessBeforeInitialization");
聽聽聽聽聽聽聽聽return聽null;
聽聽聽聽}
聽聽聽聽public聽Object聽postProcessAfterInitialization(Object聽bean,聽String聽beanName)

聽聽聽聽聽聽聽聽聽聽聽聽throws聽BeansException聽
{
聽聽聽聽聽聽聽聽System.out.println("postProcessAfterInitialization");
聽聽聽聽聽聽聽聽return聽null;
聽聽聽聽}

聽聽聽聽public聽void聽afterPropertiesSet()聽throws聽Exception聽
{
聽聽聽聽聽聽聽聽System.out.println("afterPropertiesSet");
聽聽聽聽}

聽聽聽聽public聽void聽destroy()聽throws聽Exception聽
{
聽聽聽聽聽聽聽聽System.out.println("destroy");
聽聽聽聽}

聽聽聽聽public聽String聽getMsg()聽
{
聽聽聽聽聽聽聽聽return聽msg;
聽聽聽聽}

聽聽聽聽public聽void聽setMsg(String聽msg)聽
{
聽聽聽聽聽聽聽聽this.msg聽=聽msg;
聽聽聽聽}
} BeanPostProcessorImp綾?
package聽com.open.bean;
import聽org.springframework.beans.BeansException;
import聽org.springframework.beans.factory.config.BeanPostProcessor;

public聽class聽BeanPostProcessorImp聽implements聽BeanPostProcessor聽
{
聽聽聽聽public聽Object聽postProcessBeforeInitialization(Object聽bean,聽String聽beanName)

聽聽聽聽聽聽聽聽聽聽聽聽throws聽BeansException聽
{
聽聽聽聽聽聽聽聽System.out.println("postProcessBeforeInitialization");
聽聽聽聽聽聽聽聽return聽bean;
聽聽聽聽}
聽聽聽聽public聽Object聽postProcessAfterInitialization(Object聽bean,聽String聽beanName)

聽聽聽聽聽聽聽聽聽聽聽聽throws聽BeansException聽
{
聽聽聽聽聽聽聽聽System.out.println("postProcessAfterInitialization");
聽聽聽聽聽聽聽聽return聽bean;
聽聽聽聽}
} BeanCounter綾?
package聽com.open.bean;
import聽org.springframework.beans.BeansException;
import聽org.springframework.beans.factory.config.BeanFactoryPostProcessor;
import聽org.springframework.beans.factory.config.ConfigurableListableBeanFactory;

public聽class聽BeanCounter聽implements聽BeanFactoryPostProcessor聽
{
聽聽聽聽public聽void聽postProcessBeanFactory(

聽聽聽聽聽聽聽聽聽聽聽聽ConfigurableListableBeanFactory聽beanFactory)聽throws聽BeansException聽
{
聽聽聽聽聽聽聽聽System.out.println("綾葷殑鏁伴噺錛?/span>"+beanFactory.getBeanDefinitionCount());
聽聽聽聽}
} bean.xml
<?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="life"聽name="life_name"聽class="com.open.bean.Life"聽
聽聽聽聽聽聽聽聽init-method="init">
聽聽聽聽聽聽聽聽<property聽name="msg"聽value="lifexxxx"/>
聽聽聽聽</bean>聽聽聽聽
聽聽聽聽<bean聽id="processor"聽class="com.open.bean.BeanPostProcessorImp"/>
聽聽聽聽<bean聽id="counter"聽class="com.open.bean.BeanCounter"/>
</beans>
嫻嬭瘯綾?
package聽com.open.bean;
import聽org.springframework.context.support.ClassPathXmlApplicationContext;

public聽class聽Test聽
{

聽聽聽聽public聽static聽void聽main(String[]聽args)聽
{
聽聽聽聽聽聽聽聽ClassPathXmlApplicationContext聽cx=
聽聽聽聽聽聽聽聽聽聽聽聽new聽ClassPathXmlApplicationContext("bean.xml");
聽聽聽聽聽聽聽聽聽Life聽life=(Life)cx.getBean("life");聽聽聽聽聽
聽聽聽聽}
}聽聽聽聽 杈撳嚭緇撴灉
綾葷殑鏁伴噺錛?/span>3
msg=null
鏋勯犲嚱鏁?br />
setBeanName
setBeanFactory
postProcessBeforeInitialization
afterPropertiesSet
鍒濆鍖?br />
postProcessAfterInitialization 瑙i噴錛?br />璋冪敤BeanFactoryPostProcessor鎺ュ彛鐨刾ostProcessBeanFactory鏂規(guī)硶
-->瀹炰緥鍖?璋冪敤鏋勯犲嚱鏁?->璁劇疆灞炴у?br />-->璋冪敤BeanNameAware鐨剆etBeanName()鏂規(guī)硶
-->璋冪敤BeanFactoryAware鎺ュ彛鐨剆etBeanFactory
-->璋冪敤BeanPostProcessor鎺ュ彛鐨刾ostProcessBeforeInitialization()
-->璋冪敤InitializingBean鎺ュ彛鐨刟fterPropertiesSet()
-->璋冪敤bean.xml涓埗瀹氱殑init-method鎸囧畾init()鏂規(guī)硶
-->璋冪敤BeanPostProcessor鎺ュ彛鐨刾ostProcessAfterInitialization()
瀹瑰櫒鍏抽棴
-->DisposableBean鎺ュ彛鐨刣estroy()
-->璋冪敤bean.xml涓埗瀹氱殑destroy-method鎸囧畾鐨刧o()鏂規(guī)硶

]]>
主站蜘蛛池模板:
久久精品国产大片免费观看|
亚洲AV无码国产精品色午友在线
|
中文字幕在线免费观看|
久久久青草青青亚洲国产免观
|
欧美在线看片A免费观看|
亚洲卡一卡2卡三卡4麻豆|
亚洲啪啪免费视频|
亚洲乱码一二三四区麻豆|
久久久久久久免费视频|
亚洲AV成人无码天堂|
免费A级毛片无码免费视|
国产亚洲中文日本不卡二区|
97人伦色伦成人免费视频|
亚洲国产成人久久综合|
国产免费牲交视频|
免费一级特黄特色大片|
亚洲综合区小说区激情区|
久久国产精品免费一区|
亚洲av无码专区在线播放
|
亚洲黄片手机免费观看|
国产大片免费天天看|
亚洲精品午夜无码专区|
免费91最新地址永久入口|
亚洲一区综合在线播放|
男女做羞羞的事视频免费观看无遮挡|
亚洲专区中文字幕|
免费高清小黄站在线观看|
黄色免费网址在线观看|
自拍偷自拍亚洲精品第1页|
野花香在线视频免费观看大全
|
成人免费看黄20分钟|
在线观看亚洲免费视频|
亚洲精品国产精品乱码不卡|
中文字幕免费在线看线人动作大片|
久久精品国产亚洲香蕉|
曰批视频免费40分钟试看天天|
国产亚洲精品bv在线观看|
亚洲精品国产V片在线观看|
免费无码又爽又刺激一高潮|
亚洲欧洲自拍拍偷综合|
四虎成人免费网站在线|