锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲av永久无码精品秋霞电影影院,亚洲欧美日韩中文字幕在线一区,亚洲国产高清国产拍精品http://m.tkk7.com/zhanglongsr/category/12017.html璺極婕叾淇繙鍏紝鍚懼皢涓婁笅鑰屾眰绱紒zh-cnMon, 30 Jan 2012 14:43:44 GMTMon, 30 Jan 2012 14:43:44 GMT60Spring 婧愮爜闃呰(IOC瀹瑰櫒)-bean鐨勫疄渚嬪寲浠ュ強娉ㄥ叆http://m.tkk7.com/zhanglongsr/articles/369029.htmlzhangxlzhangxlMon, 30 Jan 2012 08:04:00 GMThttp://m.tkk7.com/zhanglongsr/articles/369029.htmlhttp://m.tkk7.com/zhanglongsr/comments/369029.htmlhttp://m.tkk7.com/zhanglongsr/articles/369029.html#Feedback0http://m.tkk7.com/zhanglongsr/comments/commentRss/369029.htmlhttp://m.tkk7.com/zhanglongsr/services/trackbacks/369029.html闃呰鍏ㄦ枃

zhangxl 2012-01-30 16:04 鍙戣〃璇勮
]]>
Spring 婧愮爜闃呰(IOC瀹瑰櫒)-瀹瑰櫒鍚姩2http://m.tkk7.com/zhanglongsr/articles/369019.htmlzhangxlzhangxlMon, 30 Jan 2012 06:24:00 GMThttp://m.tkk7.com/zhanglongsr/articles/369019.htmlhttp://m.tkk7.com/zhanglongsr/comments/369019.htmlhttp://m.tkk7.com/zhanglongsr/articles/369019.html#Feedback0http://m.tkk7.com/zhanglongsr/comments/commentRss/369019.htmlhttp://m.tkk7.com/zhanglongsr/services/trackbacks/369019.html闃呰鍏ㄦ枃

zhangxl 2012-01-30 14:24 鍙戣〃璇勮
]]>
Spring 婧愮爜闃呰(IOC瀹瑰櫒)-瀹瑰櫒鍚姩1http://m.tkk7.com/zhanglongsr/articles/365591.htmlzhangxlzhangxlMon, 05 Dec 2011 06:46:00 GMThttp://m.tkk7.com/zhanglongsr/articles/365591.htmlhttp://m.tkk7.com/zhanglongsr/comments/365591.htmlhttp://m.tkk7.com/zhanglongsr/articles/365591.html#Feedback0http://m.tkk7.com/zhanglongsr/comments/commentRss/365591.htmlhttp://m.tkk7.com/zhanglongsr/services/trackbacks/365591.html闃呰鍏ㄦ枃

zhangxl 2011-12-05 14:46 鍙戣〃璇勮
]]>
涓綃囧緢鐢熷姩鐨処OC璁茶В鏂囩珷http://m.tkk7.com/zhanglongsr/articles/348680.htmlzhangxlzhangxlThu, 21 Apr 2011 02:13:00 GMThttp://m.tkk7.com/zhanglongsr/articles/348680.htmlhttp://m.tkk7.com/zhanglongsr/comments/348680.htmlhttp://m.tkk7.com/zhanglongsr/articles/348680.html#Feedback0http://m.tkk7.com/zhanglongsr/comments/commentRss/348680.htmlhttp://m.tkk7.com/zhanglongsr/services/trackbacks/348680.html涓銆佷粈涔堟槸IOC

IoC灝辨槸Inversion of Control錛屾帶鍒跺弽杞傚湪Java寮鍙戜腑錛?/span>IoC鎰忓懗鐫灝嗕綘璁捐濂界殑綾諱氦緇欑郴緇熷幓鎺у埗錛岃屼笉鏄湪浣犵殑綾誨唴閮ㄦ帶鍒躲傝繖縐頒負鎺у埗鍙嶈漿銆?/span>

 

涓嬮潰鎴戜滑浠ュ嚑涓緥瀛愭潵璇存槑浠涔堟槸IoC

 

鍋囪鎴戜滑瑕佽璁′竴涓?/span>Girl鍜屼竴涓?/span>Boy綾伙紝鍏朵腑Girl鏈?/span>kiss鏂規硶錛屽嵆Girl鎯寵Kiss涓涓?/span>Boy銆傞偅涔堬紝鎴戜滑鐨勯棶棰樻槸錛?/span>Girl濡備綍鑳藉璁よ瘑榪欎釜Boy錛?/span>

    鍦ㄦ垜浠腑鍥斤紝甯歌鐨勶輯錛笌GG鐨勮璇嗘柟寮忔湁浠ヤ笅鍑犵

    錛戙闈掓绔歸┈錛?/span>  錛掋浜插弸浠嬬粛錛?/span>  錛撱鐖舵瘝鍖呭姙

 

    閭d箞鍝竴縐嶆墠鏄渶濂藉憿錛?/span>

    闈掓绔歸┈錛?/span>Girl浠庡皬灝辯煡閬撹嚜宸辯殑Boy銆?/span>

   

   

 

public class Girl {  
    void kiss(){
       Boy boy = new Boy();
    }
}

 

 

    鐒惰屼粠寮濮嬪氨鍒涘緩鐨?/span>Boy緙虹偣灝辨槸鏃犳硶鍦ㄦ洿鎹€傚茍涓旇璐熻矗Boy鐨勬暣涓敓鍛藉懆鏈熴傚鏋滄垜浠殑Girl鎯寵鎹竴涓庝箞鍔烇紵錛堢瑪鑰呬弗閲嶄笉鏀寔Girl緇忓父鏇存崲Boy錛?/span>

 

    浜插弸浠嬬粛錛氱敱涓棿浜鴻礋璐f彁渚?/span>Boy鏉ヨ闈?/span>

       


public
class Girl {
    void kiss(){
       Boy boy = BoyFactory.createBoy();      
    }
}

 

    浜插弸浠嬬粛錛屽浐鐒舵槸濂姐傚鏋滀笉婊℃剰錛屽敖綆″彟澶栨崲涓涓ソ浜嗐備絾鏄紝浜插弸BoyFactory緇忓父鏄互Singleton鐨勫艦寮忓嚭鐜幫紝涓嶇劧灝辨槸錛屽瓨鍦ㄤ簬Globals錛屾棤澶勪笉鍦紝鏃犲涓嶈兘銆傚疄鍦ㄦ槸澶箒鐞愪簡涓鐐癸紝涓嶅鐏墊椿銆傛垜涓轟粈涔堜竴瀹氳榪欎釜浜插弸鎺哄拰榪涙潵鍛紵涓轟粈涔堜竴瀹氳浠樼粰濂逛粙緇嶈垂鍛紵涓囦竴鏈濂界殑鏈嬪弸鐖變笂浜嗘垜鐨勭敺鏈嬪弸鍛紵

 

    鐖舵瘝鍖呭姙錛氫竴鍒囦氦緇欑埗姣嶏紝鑷繁涓嶇敤璐瑰惞鐏頒箣鍔涳紝鍙渶瑕佺瓑鐫Kiss灝卞ソ浜嗐?/span>

 

      


public

class Girl {
    void kiss(Boy boy){
       // kiss boy  
      boy.kiss();
    }
}

    Well錛岃繖鏄Girl鏈濂界殑鏂規硶錛屽彧瑕佹兂鍔炴硶璐胯祩浜?/span>Girl鐨勭埗姣嶏紝騫舵妸Boy浜ょ粰浠栥傞偅涔堟垜浠氨鍙互杞繪澗鐨勫拰Girl鏉?/span>Kiss浜嗐傜湅鏉ュ嚑鍗冨勾浼犵粺鐨勭埗姣嶄箣鍛借繕鐪熸槸鏈夌敤鍝︺傝嚦灝?/span>Boy鍜?/span>Girl涓嶇敤鑷繁鐬庡繖涔庝簡銆?/span>

    榪欏氨鏄?/span>IOC錛屽皢瀵硅薄鐨勫垱寤哄拰鑾峰彇鎻愬彇鍒板閮ㄣ傜敱澶栭儴瀹瑰櫒鎻愪緵闇瑕佺殑緇勪歡銆?/span>

 

    鎴戜滑鐭ラ亾濂借幈鍧炲師鍒?/span>錛?/span>“Do not call us, we will call you.” 鎰忔濆氨鏄紝You, girlie, do not call the boy. We will feed you a boy銆?/span>

 

    鎴戜滑榪樺簲璇ョ煡閬?strong>渚濊禆鍊掕漿鍘熷垯鍗?/span> Dependence Inversion Princinple錛?/span>DIP銆?/span>

 

Eric Gamma璇達紝瑕侀潰鍚戞娊璞$紪紼嬨傞潰鍚戞帴鍙g紪紼嬫槸闈㈠悜瀵硅薄鐨勬牳蹇冦?/span>

緇勪歡搴旇鍒嗕負涓ら儴鍒嗭紝鍗?/span>

Service, 鎵鎻愪緵鍔熻兘鐨勫0鏄?/span>

Implementation, Service鐨勫疄鐜?/span>

濂藉鏄細澶氬疄鐜板彲浠ヤ換鎰忓垏鎹紝闃叉 everything depends on everything 闂錛庡嵆鍏蜂綋渚濊禆浜庡叿浣撱?/span>

鎵浠ワ紝鎴戜滑鐨?/span>Boy搴旇鏄疄鐜?/span>Kissable鎺ュ彛銆傝繖鏍蜂竴鏃?/span>Girl涓嶆兂kiss鍙伓鐨?/span>Boy鐨勮瘽錛岃繕鍙互kiss鍙埍鐨?/span>kitten鍜屾厛紲ョ殑grandmother銆?/span>

 

浜屻?/span>IOC鐨?/span>type

    IoC鐨?/span>Type鎸囩殑鏄?/span>Girl寰楀埌Boy鐨勫嚑縐嶄笉鍚屾柟寮忋傛垜浠愪竴鏉ヨ鏄庛?/span>

 

    IOC type 0錛?/span>涓嶇敤IOC

 

 

public class Girl implements Servicable {

    private Kissable kissable;

    public Girl() {
        kissable = new Boy();
    }

    public void kissYourKissable() {
        kissable.kiss();
    }

}

 

 

    Girl鑷繁寤虹珛鑷繁鐨?/span>Boy錛屽緢闅炬洿鎹紝寰堥毦鍏變韓緇欏埆浜猴紝鍙兘鍗曠嫭浣跨敤錛屽茍璐熻矗瀹屽叏鐨勭敓鍛藉懆鏈熴?/span>

 

    IOC type 1錛?/span>鍏堢湅浠g爜錛?/span>

 

 

public class Girl implements Servicable {

    Kissable kissable;

    public void service(ServiceManager mgr) {
        kissable = (Kissable) mgr.lookup(kissable);
    }

    public void kissYourKissable() {
        kissable.kiss();
    }

}

 

 

    榪欑鎯呭喌鍑虹幇浜?/span>Avalon Framework銆備竴涓粍浠跺疄鐜頒簡Servicable鎺ュ彛錛屽氨蹇呴』瀹炵幇service鏂規硶錛屽茍浼犲叆涓涓?/span>ServiceManager銆傚叾涓細鍚湁闇瑕佺殑鍏跺畠緇勪歡銆傚彧闇瑕佸湪service鏂規硶涓垵濮嬪寲闇瑕佺殑Boy銆?/span>

    鍙﹀錛?/span>J2EE涓粠Context鍙栧緱瀵硅薄涔熷睘浜?/span>type 1銆?/span>

 

    瀹冧緷璧栦簬閰嶇疆鏂囦歡

 

<container>
    <component name=kissable class=Boy">              
       <configuration>
</configuration>
    </component>

    <component name=girl" class=Girl" />
</container>

 

 

    IOC type 2錛?/span>

   

 

public class Girl {

    private Kissable kissable;

    public void setKissable(Kissable kissable) {
        this.kissable = kissable;
    }

    public void kissYourKissable() {
        kissable.kiss();
    }

}

 

 

    Type 2鍑虹幇浜?/span>Spring Framework錛屾槸閫氳繃JavaBean鐨?/span>set鏂規硶鏉ュ皢闇瑕佺殑Boy浼犻掔粰Girl銆傚畠蹇呴』渚濊禆浜庨厤緗枃浠躲?/span>

       

 

<beans>
    <bean id=boy" class=Boy"/>
    <bean id=girl class=Girl">
        <property name=kissable">
           <ref bean=boy"/>
        </property>
    </bean>
</beans>

 

 

IOC type 3

 

 

public class Girl {

    private Kissable kissable;

    public Girl(Kissable kissable) {
        this.kissable = kissable;
    }

    public void kissYourKissable() {
        kissable.kiss();
    }

}

 

 

    榪欏氨鏄?/span>PicoContainer鐨勭粍浠?/span> 銆傞氳繃鏋勯犲嚱鏁頒紶閫?/span>Boy緇?/span>Girl銆?/span>

 

 

 

PicoContainer container = new DefaultPicoContainer();
container.registerComponentImplementation(Boy.class);
container.registerComponentImplementation(Girl.class);
Girl girl = (Girl) container.getComponentInstance(Girl.class);
girl.kissYourKissable();

 

 

    鍏充簬PicoContainer錛屼綔鑰呭悗緇枃绔犱細璇︾粏浠嬬粛銆?/span>

 

浣滆呰錛?/span>  

    Well錛屼互涓婄殑榪欎簺鐞嗚閮ㄥ垎鏈変簺宸茬粡鏈変簡鏂扮殑瀹氫箟浜嗐傝繃浜涘ぉ鎴戜細鍐嶅啓涓浜涙枃绔犲叿浣撹鏄庛傛瘮濡傦紝鍘熸潵鐨勪笁縐?/span>type緇撴瀯鐜板湪宸茬粡閲嶆柊瀹氫箟涓轟緷璧栨敞灝勭殑璁稿灞傛銆?/span>

IoC寰堝勾杞伙紝榪樺湪鍙戝睍銆備即闅忕潃IOC鐨勫彂灞曪紝AOP錛?/span>COP錛?/span>SOP絳夌瓑閮藉湪涓嶆柇鐨勫彂灞曘備綔涓虹▼搴忓憳錛岄殢鏃跺叧娉ㄧ潃鏂扮殑鎬濇兂鐨勫彂灞曟槸涓浠跺緢杞繪澗鎰夊揩鐨勪簨鎯呫傛湁娌℃湁浜烘効鎰忓拰鎴戜竴璧鋒帰璁ㄥ涔犲叡鍚岃繘姝ュ憖錛?/span>

鎽樿嚜錛歨ttp://dev.csdn.net/develop/article/24/24397.shtm



zhangxl 2011-04-21 10:13 鍙戣〃璇勮
]]>
鐢↗ava鍔ㄦ佷唬鐞嗗疄鐜癆OP http://m.tkk7.com/zhanglongsr/articles/348676.htmlzhangxlzhangxlThu, 21 Apr 2011 01:45:00 GMThttp://m.tkk7.com/zhanglongsr/articles/348676.htmlhttp://m.tkk7.com/zhanglongsr/comments/348676.htmlhttp://m.tkk7.com/zhanglongsr/articles/348676.html#Feedback0http://m.tkk7.com/zhanglongsr/comments/commentRss/348676.htmlhttp://m.tkk7.com/zhanglongsr/services/trackbacks/348676.html 鐩墠鏁翠釜寮鍙戠ぞ鍖哄AOP(Aspect Oriented Programing)鎺ㄥ磭澶囪嚦錛屼篃娑岀幇鍑哄ぇ閲忔敮鎸丄OP鐨勪紭縐Framework錛?-Spring錛?JAC錛?Jboss AOP 絳夌瓑銆侫OP浼間箮涓鏃朵箣闂存垚浜嗘疆嫻併侸ava鍒濆鑰呬笉紱佽鍙戝嚭鎰熸叏錛孫OP榪樻病鏈夊閫氬憿錛屽張鏉OP銆傛湰緋誨垪鏂囩珷渚挎槸涓烘偍鍋氬嚭榪欐柟闈㈢殑琛ユ晳錛屽彧鏄氳繃涓涓畝鍗曠殑渚嬪瓙渚垮彲浠ュ悜鍒濆鑰呭睍紺轟竴涓嬪浣曟潵榪涜AOP銆?

涓轟簡綆鍗曡搗瑙侊紝渚嬪瓙娌℃湁娌℃湁浣跨敤浠諱綍絎笁鏂圭殑AOP Framework錛?鑰屾槸鍒╃敤Java璇█鏈韓鑷甫鐨勫姩鎬佷唬鐞嗗姛鑳芥潵瀹炵幇AOP銆?

璁╂垜浠厛鍥炲埌AOP鏈韓錛孉OP涓昏搴旂敤浜庢棩蹇楄褰曪紝鎬ц兘緇熻錛屽畨鍏ㄦ帶鍒訛紝浜嬪姟澶勭悊絳夋柟闈€傚畠鐨勪富瑕佹剰鍥懼氨瑕佸皢鏃ュ織璁板綍錛屾ц兘緇熻錛屽畨鍏ㄦ帶鍒剁瓑絳変唬鐮佷粠鍟嗕笟閫昏緫浠g爜涓竻妤氱殑鍒掑垎鍑烘潵錛屾垜浠彲浠ユ妸榪欎簺琛屼負涓涓竴涓崟鐙湅浣滅郴緇熸墍瑕佽В鍐崇殑闂錛屽氨鏄墍璋撶殑闈㈠悜闂鐨勭紪紼?涓嶇煡灝咥OP璇戜綔闈㈠悜闂鐨勭紪紼嬫槸鍚︽瑺濡?銆傞氳繃瀵硅繖浜涜涓虹殑鍒嗙錛屾垜浠笇鏈涘彲浠ュ皢瀹冧滑鐙珛鍦伴厤緗埌鍟嗕笟鏂規硶涓紝鑰岃鏀瑰彉榪欎簺琛屼負涔熶笉闇瑕佸獎鍝嶅埌鍟嗕笟鏂規硶浠g爜銆?

鍋囪緋葷粺鐢變竴緋誨垪鐨凚usinessObject鎵瀹屾垚涓氬姟閫昏緫鍔熻兘錛岀郴緇熻姹傚湪姣忎竴嬈′笟鍔¢昏緫澶勭悊鏃惰鍋氭棩蹇楄褰曘傝繖閲屾垜浠暐鍘誨叿浣撶殑涓氬姟閫昏緫浠g爜銆?

public interface BusinessInterface {
public void processBusiness();
}

public class BusinessObject implements BusinessInterface {
private Logger logger = Logger.getLogger(this.getClass().getName());
public void processBusiness(){
try {
logger.info("start to processing...");
//business logic here銆?
System.out.println(“here is business logic”);
logger.info("end processing...");
} catch (Exception e){
logger.info("exception happends...");
//exception handling
}
}
}

榪欓噷澶勭悊鍟嗕笟閫昏緫鐨勪唬鐮佸拰鏃ュ織璁板綍浠g爜娣峰悎鍦ㄤ竴璧鳳紝榪欑粰鏃ュ悗鐨勭淮鎶ゅ甫鏉ヤ竴瀹氱殑鍥伴毦錛屽茍涓斾篃浼氶犳垚澶ч噺鐨勪唬鐮侀噸澶嶃傚畬鍏ㄧ浉鍚岀殑log浠g爜灝嗗嚭鐜板湪緋葷粺鐨勬瘡涓涓狟usinessObject涓?

鎸夌収AOP鐨勬濇兂錛屾垜浠簲璇ユ妸鏃ュ織璁板綍浠g爜鍒嗙鍑烘潵銆傝灝嗚繖浜涗唬鐮佸垎紱誨氨娑夊強鍒頒竴涓棶棰橈紝鎴戜滑蹇呴』鐭ラ亾鍟嗕笟閫昏緫浠g爜浣曟椂琚皟鐢紝榪欐牱鎴戜滑濂芥彃鍏ユ棩蹇楄褰曚唬鐮併備竴鑸潵璇磋鎴幏涓涓柟娉曪紝鎴戜滑鍙互閲囩敤鍥炶皟鏂規硶鎴栬呭姩鎬佷唬鐞嗐傚姩鎬佷唬鐞嗕竴鑸鏇村姞鐏墊椿涓浜涳紝鐩墠澶氭暟鐨凙OP Framework涔熷ぇ閮介噰鐢ㄤ簡鍔ㄦ佷唬鐞嗘潵瀹炵幇銆傝繖閲屾垜浠篃閲囩敤鍔ㄦ佷唬鐞嗕綔涓轟緥瀛愩?

JDK1.2浠ュ悗鎻愪緵浜嗗姩鎬佷唬鐞嗙殑鏀寔錛岀▼搴忓憳閫氳繃瀹炵幇java.lang.reflect.InvocationHandler鎺ュ彛鎻愪緵涓涓墽琛屽鐞嗗櫒錛岀劧鍚庨氳繃 java.lang.reflect.Proxy寰楀埌涓涓唬鐞嗗璞★紝閫氳繃榪欎釜浠g悊瀵硅薄鏉ユ墽琛屽晢涓氭柟娉曪紝鍦ㄥ晢涓氭柟娉曡璋冪敤鐨勫悓鏃訛紝鎵ц澶勭悊鍣ㄤ細琚嚜鍔ㄨ皟鐢ㄣ?

鏈変簡JDK鐨勮繖縐嶆敮鎸侊紝鎴戜滑鎵瑕佸仛鐨勪粎浠呮槸鎻愪緵涓涓棩蹇楀鐞嗗櫒銆?

public class LogHandler implements InvocationHandler {

private Logger logger 錛?Logger.getLogger(
this.getClass().getName());
private Object delegate;
public LogHandler(Object delegate){
this.delegate = delegate;
}

public Object invoke(Object proxy錛?
Method method錛?Object[] args)
throws Throwable {
Object o = null;
try {
logger.info("method stats..." 錛?method);
o = method.invoke(delegate錛宎rgs);
logger.info("method ends..." + method);
} catch (Exception e){
logger.info("Exception happends...");
//excetpion handling銆?
}
return o;
}
}

鐜板湪鎴戜滑鍙互鎶夿usinessObject閲岄潰鐨勬墍鏈夋棩蹇楀鐞嗕唬鐮佸叏閮ㄥ幓鎺変簡銆?

public class BusinessObject implements BusinessInterface {

private Logger logger = Logger.getLogger(
this.getClass().getName());
public void processBusiness(){
//business processing
System.out.println(“here is business logic”);
}
}

瀹㈡埛绔皟鐢ㄥ晢涓氭柟娉曠殑浠g爜濡備笅錛?

BusinessInterface businessImp = new BusinessObject();

InvocationHandler handler =
new LogHandler(businessImp);

BusinessInterface proxy = (
BusinessInterface) Proxy.newProxyInstance(
businessImp.getClass().getClassLoader()錛?
businessImp.getClass().getInterfaces()錛?
handler);

proxy.processBusiness();

紼嬪簭杈撳嚭濡備笅錛?

INFO: method stats..銆?
here is business logic
INFO: method ends..銆?

鑷蟲鎴戜滑鐨勭涓嬈″皬灝濊瘯綆楁槸瀹屾垚浜嗐傚彲浠ョ湅鍒幫紝閲囩敤AOP涔嬪悗錛屾棩蹇楄褰曞拰涓氬姟閫昏緫浠g爜瀹屽叏鍒嗗紑浜嗭紝浠ュ悗瑕佹敼鍙樻棩蹇楄褰曠殑璇濆彧闇瑕佷慨鏀規棩蹇楄褰曞鐞嗗櫒灝辮浜嗭紝鑰屼笟鍔″璞℃湰韜紙BusinessObject錛夋棤闇鍋氫換浣曚慨鏀廣傚茍涓旇繖涓棩蹇楄褰曚笉浼氶犳垚閲嶅浠g爜浜嗭紝鎵鏈夌殑鍟嗕笟澶勭悊瀵硅薄閮藉彲浠ラ噸鐢ㄨ繖涓棩蹇楀鐞嗗櫒銆?

褰撶劧鍦ㄥ疄闄呭簲鐢ㄤ腑錛岃繖涓緥瀛愬氨鏄懼緱澶矖緋欎簡銆傜敱浜嶫DK鐨勫姩鎬佷唬鐞嗗茍娌℃湁鐩存帴鏀寔涓嬈℃敞鍐屽涓?InvocationHandler錛岄偅涔堟垜浠涓氬姟澶勭悊鏂規硶鏃㈣鏃ュ織璁板綍鍙堣鎬ц兘緇熻鏃訛紝灝遍渶瑕佽嚜宸卞仛涓浜涘彉閫氫簡銆備竴鑸垜浠彲浠ヨ嚜宸卞畾涔変竴涓?Handler鎺ュ彛錛岀劧鍚庣淮鎶や竴涓槦鍒楀瓨鏀炬墍鏈塇andler錛屽綋InvocationHandler琚Е鍙戠殑鏃跺欐垜浠緷嬈¤皟鐢ㄨ嚜宸辯殑Handler銆傛墍騫哥殑鏄洰鍓嶅嚑涔庢墍鏈夌殑AOP Framework閮藉榪欐柟闈㈡彁渚涗簡寰堝ソ鐨勬敮鎸?榪欓噷鎺ㄨ崘澶у浣跨敤Spring銆?

鏈枃杞嚜 錛歨ttp://blog.csdn.net/turkeyzhou/archive/2008/03/01/2137358.aspx


zhangxl 2011-04-21 09:45 鍙戣〃璇勮
]]>
Spring涓嬪紑鍙戝甫鏈夊浘鐗囩殑html閭歡http://m.tkk7.com/zhanglongsr/articles/51461.htmlzhangxlzhangxlThu, 08 Jun 2006 11:05:00 GMThttp://m.tkk7.com/zhanglongsr/articles/51461.htmlhttp://m.tkk7.com/zhanglongsr/comments/51461.htmlhttp://m.tkk7.com/zhanglongsr/articles/51461.html#Feedback0http://m.tkk7.com/zhanglongsr/comments/commentRss/51461.htmlhttp://m.tkk7.com/zhanglongsr/services/trackbacks/51461.html聽聽聽鍙戦侀偖浠墮渶瑕侀氳繃楠岃瘉,鎴戜滑闇瑕佸緩绔嬩竴涓甫鏈夊疄鐜頒簡Authenticator鐨凷ession.鎴戜滑搴旇浜嗚В,鍦ㄧ敤Java緙栧啓JavaMail鏃舵槸闇瑕佷嬌鐢ㄧ殑楠岃瘉鐨?浣嗘槸,鍦⊿pring涓病鏈夋彁渚涙敞鍏ラ獙璇佸疄鐜扮殑鍔熻兘(鍗蟲敞鍏uthenticator鐨勫疄鐜?.浣嗘槸鎴戜滑鍙互鐢ㄤ互涓嬫柟寮忓姞浠ュ疄鐜?涓嬮潰灝變互gmail閭歡涓轟緥璇存槑:
聽聽聽鍦⊿pring涓殑閰嶇疆淇℃伅濡備笅:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
							http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

        <!-- our Authenticator implementation -->
	<bean id="smtpAuthenticator"
		class="forums.mailtest.SmtpAuthenticator">
		<constructor-arg value="yourname@gmail.com" />
		<constructor-arg value="password" />
	</bean>

        <!-- now setup an authenticated session -->
	<bean id="mailSession" class="javax.mail.Session"
		factory-method="getInstance">
		<constructor-arg>
			<props>
				<prop key="mail.smtp.auth">true</prop>
				<prop key="mail.smtp.socketFactory.port">465</prop>
				<prop key="mail.smtp.socketFactory.class">
					javax.net.ssl.SSLSocketFactory
				</prop>
				<prop key="mail.smtp.socketFactory.fallback">
					false
				</prop>
			</props>
		</constructor-arg>
		<constructor-arg ref="smtpAuthenticator" />
	</bean>

        <!-- and configure the MailSender with the authenticated session -->
	<bean id="mailSender"
		class="org.springframework.mail.javamail.JavaMailSenderImpl">
		<property name="host" value="smtp.gmail.com" />
		<property name="session" ref="mailSession" />
	</bean>

	<!-- this is a template message that we can pre-load with default state -->
	<bean id="templateMessage"
		class="org.springframework.mail.SimpleMailMessage">
		<property name="from" value="yourname@gmail.com" />
		<property name="subject" value="Testing" />
	</bean>

	<bean id="mailTest" class="forums.mailtest.MailTest">
		<constructor-arg ref="mailSender" />
		<constructor-arg ref="templateMessage" />
	</bean>
</beans>

瀹炵幇鎴戜滑鑷繁鐨勯獙璇佸疄鐜?/font>
package forums.mailtest;

import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;

public class SmtpAuthenticator extends Authenticator {
	private String username;
	private String password;
	
	public SmtpAuthenticator(String username, String password) {
		super();
		this.username = username;
		this.password = password;
	}

	public PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(username, password);
	}
}
聽聽聽緙栧啓嫻嬭瘯綾誨彂閫侀偖浠?
package forums.mailtest;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.mail.MailException;
import org.springframework.mail.MailSender;
import org.springframework.mail.SimpleMailMessage;

public class MailTest {
	private MailSender mailSender;
	private SimpleMailMessage templateMessage;
	public MailTest(MailSender mailSender, SimpleMailMessage templateMessage) {
		super();
		this.mailSender = mailSender;
		this.templateMessage = templateMessage;
	}
	
	public void sendMeMail() {
		SimpleMailMessage msg = new SimpleMailMessage(templateMessage);
		msg.setTo("test@example.com");
		msg.setText("This is a test.\nGo Spring!\n");
		try {
			this.mailSender.send(msg);
		} catch (MailException e) {
			System.err.println("Didn't work.");
			e.printStackTrace();
		}
	}
	
	public static final void main(String[] args) {
		ApplicationContext appCtx = new ClassPathXmlApplicationContext(new String[] {
				"forums/mailtest/application-config.xml"
		});
		
		MailTest tester = (MailTest) appCtx.getBean("mailTest");
		tester.sendMeMail();
	}
}

聽聽聽瀵逛簬gmail绔彛鐨勮緗彲浠ュ弬鑰?http://mail.google.com/support/bin/a...y?answer=13287,涓漢璁や負yahoo鍜?gmail 閮藉笇鏈涙垜浠嬌鐢ㄩ獙璇?騫朵笖鎴戜滑鍙互涓烘瘡涓偖浠舵湇鍔″櫒璁劇疆涓嶅悓鐨勭鍙?濡傛灉娌℃湁閲囩敤楠岃瘉,涓巊mail鐨勮繛鎺ュ皢浼氭姏鍑轟竴涓病鏈夐獙璇佷俊鎭殑寮傚父!


zhangxl 2006-06-08 19:05 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 成人无码视频97免费| 国产精品亚洲小说专区| 男女作爱在线播放免费网站| 亚洲精品第一国产综合精品99 | 国产成人一区二区三区视频免费| 亚洲综合最新无码专区| fc2成年免费共享视频18| 亚洲国产成人片在线观看| 久久久久亚洲AV成人无码网站| 国产免费人成视频在线播放播| 国产成人高清亚洲| 99麻豆久久久国产精品免费| 国产精品免费观看久久| 国产成人综合亚洲AV第一页 | 免费无码又爽又刺激毛片| 亚洲区小说区图片区QVOD| 91福利免费网站在线观看| 亚洲综合日韩中文字幕v在线| 最近中文字幕高清免费中文字幕mv| 亚洲视频免费在线看| 91嫩草国产在线观看免费| 亚洲AV永久无码精品| 成年网在线观看免费观看网址| free哆啪啪免费永久| 亚洲AV无码一区二区三区牛牛| 国内精品免费久久影院| 亚洲精品无码久久毛片波多野吉衣 | 91免费精品国自产拍在线不卡| 麻豆亚洲AV成人无码久久精品 | 亚洲片国产一区一级在线观看| 国产自国产自愉自愉免费24区| 亚洲高清中文字幕综合网| 皇色在线视频免费网站| 久久青青成人亚洲精品 | 国产一级淫片免费播放| 亚洲人成网站日本片| 免费一级毛片正在播放| 免费国产在线视频| 亚洲精品国产suv一区88| 亚洲国产三级在线观看| 99在线视频免费观看|