鍓嶈█馃鐜嬬粡鐞嗭細涓嬭浜嗭紝涓嬭浜嗭紝浠婂ぉ鎴戞潵璇磋浠€涔堟槸瑙傚療鑰呮ā寮忥紝鍦ㄦ垜浠钩鏃剁殑浠g爜瀹炶返涓紝寰堝浜洪兘鏈夎繖鏍风殑鎯虫硶瑙傚療鑰呮ā寮忥紝浠婂ぉ骞茶揣婊℃弧鐨凪an锛屼粩缁嗗惉锛屾垜涓嶆噦鎴戠殑鍚屽浠紝浣犱滑杩樺湪鍙戝憜馃檨鐢勪笉鏄庣櫧锛氱帇缁忕悊锛屼綘鍒浜嗭紝灏忕編鍙戜簡涓€鍦堟湅鍙嬶紝璇村ス鎯崇湅鐢靛奖锛屾垜灏辨槸鍠滄锛屾垜鍘绘壘鎵惧ス浠婃櫄绾﹀ス涓€璧峰幓锛屽彲鏄數璇濋噷鐬棿灏?0澶氭潯淇℃伅锛岃€屼笖閮芥槸浠栦滑寰堝枩娆㈠皬姊呫€傛垜纭俊娌℃湁甯屾湜銆備笅鏉ヨ窡鎴戜竴璧峰姞鐝惂锛屽埆鍘荤湅鐢靛奖浜嗮煣愮帇缁忕悊锛氫粖澶╃殑璇句綘璁ょ湡鍚锛屽ソ濂借〃鐜帮紝鎴戣灏忕編闄綘鐪嬬數褰别煠笉鎳傚紑蹇冪瑧锛氱湡鐨勶紝蹇偣锛岀粡鐞嗚璁叉鏂囦簡馃鐜嬬粡鐞嗭細瑙傚療鑰呮ā寮忓畾涔変簡瀵硅薄涔嬮棿涓€瀵瑰鐨勪緷璧栧叧绯伙紝鍏佽澶氫釜瑙傚療鑰呭璞″悓鏃剁洃鎺ф煇涓富浣撳璞°€傚綋subject瀵硅薄鍙戠敓鍙樺寲鏃讹紝瀹冪殑鎵€鏈変緷璧栬€咃紙Observers锛夐兘浼氬緱鍒伴€氱煡鍜屾洿鏂梆煒笉鏄庣櫧锛歓zzzz馃槧鐜嬬粡鐞嗭細鎴戜笉鏄庣櫧锛屼綘杩樺湪鐫¤锛屼綘杩樻兂鍜屽皬缇庣湅鐢靛奖鍚楋紵澶娊璞′簡锛岀湅涓嶆噦馃槧鐜嬬粡鐞嗭細瀹氫箟濂芥娊璞★紝鐮佷竴涓嬪氨鏄庣櫧浜嗐€傚叾瀹炶繖涓畾涔夊緢鐩镐技銆傚鏋滀綘鍠滄灏忕編鐨勬湅鍙嬪湀锛屼綘灏变細鏀跺惉灏忕編鐨勬湅鍙嬪湀涓婚锛屼竴鏃﹀埆浜虹偣璧炰簡灏忕編鐨勬湅鍙嬪湀锛屼綘浣滀负瑙傚療鑰呬篃鑳芥敹鍒扮浉搴旂殑淇℃伅馃檨涓嶆噦锛氳櫧鐒舵噦锛屼絾鏄緢蹇冮吀锛氬ソ鍚э紝涓嬮潰鎴戜滑浠ュ僵绁ㄧ殑绱㈠紩涓轰緥锛屼互杞︾墝涓轰緥銆傝鎴戜滑寮€濮嬬紪鐮佸惂銆傛垜浠厛璁剧疆涓€涓娊濂栫粨鏋渄to銆傚畠鏄粈涔堬紵鎴戜滑璁╄繖涓猟to缁ф壙Observable绫汇€傜户鎵垮悗璇ョ被鏄竴涓瀵熻€呭璞ublicclassLotteryResultextendsObservable{/***鐢ㄦ埛鍚?/privateStringuserName;/***鎶藉缁撴灉*/privateStringmsg;/***寮€濂栨椂闂?/privateDatedateTime;}鐒跺悗鍦ㄨ繖涓猟to閲岄潰鍐欎竴涓猵roduceLotteryResult鏂规硶锛屼富瑕佺洰鐨勬槸鍛婅瘔鐩戝惉鍣ㄨ繖涓猟to鍙戠敓浜嗗彉鍖?浣犺嚜宸辩湅publicvoidproduceLotteryResult(LotteryResultresult){//鏍囪鍙樹簡setChanged();//閫氱煡鐩戝惉鍣╪otifyObservers();}瑙傚療鑰呭噯澶囧ソ浜嗭紝鐩戝惉鍣⊿endLotteryResultListener姝e湪鎾斁璇昏€呴渶瑕佸疄鐜颁竴涓狾bserver鏂规硶鏉ユ帴鍙楄瀵熻€呯殑鍙樺寲淇℃伅銆備唬鐮佸涓媝ublicclassSendLotteryResultListenerimplementsObserver{/***姣忓綋琚瀵熷璞″彂鐢熷彉鍖栨椂璋冪敤璇ユ柟娉曘€備竴涓?搴旂敤绋嬪簭璋冪敤涓€涓?tt>Observable瀵硅薄鐨?notifyObservers
鏂规硶鏉ラ€氱煡璇ュ璞$殑鎵€鏈?瑙傚療鑰呭彉鍖栥€?*@paramo鍙瀵熷璞°€?@paramarg浼犻€掔粰notifyObservers
鐨勫弬鏁?/@Overridepublicvoidupdate(Observableo,Objectarg){LotteryResultresult=(LotteryResult)o;System.out.println(result.getUserName()+"寮€濂栫粨鏋滀负"+result.getMsg());}}涓囦簨淇卞锛屽紑濮嬫祴璇昿ublicclassTest{publicstaticvoidmain(String[]args){SendLotteryResultListenerlistener=newSendLotteryResultListener();LotteryResultlotteryResult=newLotteryResult();//娣诲姞鐩戝惉鍣╨otteryResult.addObserver(listener);lotteryResult.setUserName("寮犱笁");lotteryResult.setMsg("鎶藉鎴愬姛");lotteryResult.setDateTime(鏂版棩鏈?));lotteryResult.produceLotteryResult(lotteryResult);}}----------------寮犱笁鎶藉缁撴灉杈撳嚭缁撴灉鏄娊濂栨垚鍔熸祴璇曟垚鍔燄煈嶐煆伙紝鎴戜滑鐨刲istener鏀跺埌浜嗚瑙傚療鑰呭彉鍖栫殑淇℃伅馃え鎴戜笉鐭ラ亾涓嶆槑鐧斤細濡欏晩锛岀帇缁忕悊锛岃繖鍜屼箣鍓嶆潹灏忓竻璺熸垜璇寸殑鏄ュ娲诲姩鏄笉鏄緢鍍忥紵鐜嬬粡鐞嗭細鎴戜笉鏄庣櫧锛屼綘浠婂ぉ鍦ㄥ仛浠€涔堬紵寮€鎮熶簡锛屼綘璇寸殑寰堝锛岃兘鍐欎釜demo鍚楋紵馃え涓嶆槑鐧斤細鏄殑----------------------------------------------------@RestControllerpublicclassEventRequestimplementsApplicationContextAware{privateApplicationContextappContext;@RequestMapping("/testEvent")publicStringtestEventSave(Stringname){appContext.publishEvent(newLotteryResult(this,name));杩斿洖鈥滅‘瀹氣€濓紱}@OverridepublicvoidsetApplicationContext(ApplicationContextapplicationContext)throwsBeansException{appContext=applicationContext;}}--------------------------------------------------//Listener@ComponentpublicclassWebEventListener{/***浠呭湪瀛楁鍊间负Pharaoh涓攃lass涓篣ser.class鏃舵墠鐩戝惉*/@EventListener(classes=LotteryResult.class,condition="#result.name=='鑰佺帇'")publicvoidlisten(LotteryResultresult){//TODO}/***鐩戝惉LotteryResult.class鐨勬儏鍐?/@EventListener(classes=LotteryResult.class)publicvoidlisten1(LotteryResultresult){//TODO}}馃鐜嬬粡鐞嗭細涓嶉敊锛屼粖澶╃殑璇惧埌姝ょ粨鏉燄煡轰笉鎳傦細涓嶆槸璇达紝璁╂垜鍜屽皬缇庣湅鐢靛奖鍚楋紵馃鐜嬬粡鐞嗘敹鎷惧ソ鐢佃剳璧板紑锛氫笉鐢ㄧ湅鐜板湪鍑犵偣浜嗭紝灏忕編宸茬粡璺熷埆浜哄幓鐪嬬數褰变簡锛屽湪鍦鸿竟鍝兘涓嶇煡閬撴€庝箞鍔炪€傚皢瑙傚療鑰呮ā寮忔鎷负涓€绉嶈涓烘ā寮忥紝缁撴瀯婊¤冻寮€闂師鍒欍€傚綋鎮ㄩ渶瑕佹坊鍔犲叾浠栫洃鎺т簨浠舵垨淇敼鐩戞帶閫昏緫鏃讹紝鏃犻渶鏇存敼浜嬩欢澶勭悊绫汇€備絾鏄綘鍙兘鏃犳硶鎺у埗璋冪敤椤哄簭锛岄渶瑕佽繑鍥炰竴浜涗簨浠剁粨鏋滄墠鑳界户缁搷浣滐紝鎵€浠ュ湪浣跨敤娴佺▼鏃堕渶瑕佽€冭檻鍦烘櫙鐨勫悎鐞嗘€с€傛枃鏈煠楀鏋滄湰鏂囧鎮ㄦ湁甯姪锛岃鐐逛釜璧炪€傛洿澶氬井淇″垎浜叕浼楀彿[codeLiveHouse]鍏紬鍙峰洖澶嶁€滀俊鎭€濊幏鍙栧ぇ鍘傞潰璇曢/鎶€鏈枃妗?鐢靛瓙涔︾瓑銆傜瓑涓婃湡鎺ㄨ崘鐨勯潰璇曞畼闄垜涓€璧锋锛屾暟鎹簱姝绘満浜哅aven鐢熶骇涓紝绁ぉ鐨勬槸绋嬪簭鍛?/p>
