锘??xml version="1.0" encoding="utf-8" standalone="yes"?>精品在线观看国产,天天综合av,亚洲精美视频http://www.aygfsteel.com/97030530/category/7965.html鍕囧線鐩村墠zh-cnThu, 01 Mar 2007 15:35:25 GMTThu, 01 Mar 2007 15:35:25 GMT60鍥炶皟鍑芥暟鍦⊿pring涓殑浣跨敤http://www.aygfsteel.com/97030530/archive/2006/03/30/38367.html閫濆幓鐨勫勾鍗?/dc:creator>閫濆幓鐨勫勾鍗?/author>Thu, 30 Mar 2006 13:57:00 GMThttp://www.aygfsteel.com/97030530/archive/2006/03/30/38367.htmlhttp://www.aygfsteel.com/97030530/comments/38367.htmlhttp://www.aygfsteel.com/97030530/archive/2006/03/30/38367.html#Feedback0http://www.aygfsteel.com/97030530/comments/commentRss/38367.htmlhttp://www.aygfsteel.com/97030530/services/trackbacks/38367.html 聽聽 榪欐槸涓縐嶅鍗曚釜鏂規硶鐨勫弬鏁頒嬌鐢ㄦ帶鍒跺弽杞紝鎶婃帶鍒舵潈鍜屽樊閿欏鐞嗕氦緇欐鏋舵潵澶勭悊銆備弗鏍肩殑璇達紝榪欐槸涓縐峉trategy妯″紡鐨勭壒渚嬶紝浠栦滑鐨勫尯鍒氨鍦ㄤ簬鎺ュ彛鐨勫鏉傚害涓嶅悓銆?br />聽聽 鍦⊿pring鐨凧dbcTemplate涓氨浣跨敤浜嗚繖縐嶆ā寮忋侸dbcTemplate瀹炵幇浜唓uery()鏂規硶錛屽弬鏁版槸SQL瀛楃涓詫紝鍜屼竴涓疄鐜頒簡鍥炶皟鎺ュ彛鐨勶紝灝嗗湪璇誨彇resultSet姣忚鏃惰璋冪敤銆?br />

1 public interface 聽RowCallbackHandler聽
2 {
3 聽聽聽聽 void 聽processRow(ResultSet聽rs)聽 throws 聽SQLException;
4 }


聽 query()鏂規硶灝佽浜嗗JDBC搴曞眰API鐨勮皟鐢ㄣ?br />

public void 聽query(String聽sql,聽RowCallbackHandler聽callbackHandler)聽 throws 聽JdbcSqlException聽
{
聽聽聽聽Connection聽con聽
= null ;
聽聽聽聽PreparedStatement聽ps聽
= null ;
聽聽聽聽ResultSet聽rs聽
= null ;
聽聽聽聽
try
聽聽聽聽
{
聽聽聽聽聽聽聽聽con聽
= < code聽to聽get聽connection >
聽聽聽聽聽聽聽聽ps聽
= 聽con.prepareStatement聽(sql);
聽聽聽聽聽聽聽聽rs聽
= 聽ps.executeQuery();
聽聽聽聽聽聽聽聽
while 聽(rs.next())聽
聽聽聽聽聽聽聽聽
{
聽聽聽聽聽聽聽聽聽聽聽聽callbackHandler.processRow(rs);
聽聽聽聽聽聽聽聽}

聽聽聽聽聽聽聽聽rs.close();
聽聽聽聽聽聽聽聽ps.close();
聽聽聽聽}

聽聽聽聽
catch 聽(SQLException聽ex)聽
聽聽聽聽
{
聽聽聽聽聽聽聽聽
throw new 聽JdbcSqlException( " Couldn't聽run聽query聽[ " + 聽sql聽 + " ] " ,聽ex);
聽聽聽聽}

聽聽聽聽
finally
聽聽聽聽
{
聽聽聽聽聽聽聽聽DataSourceUtils.closeConnectionIfNecessary(
this .dataSource,聽con);
聽聽聽聽}

}


聽聽 鍦ㄤ笂闈㈢殑渚嬪瓙涓紝JdbcSqlException緇ф壙浜唈ava.lang.RuntimeException錛屼篃灝辨槸璇磋皟鐢ㄨ呭彲浠ラ夋嫨鍘繪崟鑾峰畠錛屼絾鏄繖涓嶆槸蹇呴』鐨勩傚亣濡傚疄鐜頒簡鍥炶皟鎺ュ彛鐨勫瓙綾婚噷鐨勬柟娉曞嚭閿欙紝鑰屼笖涓嶆槸RuntimeException鐨勫瓙綾伙紝涔熷氨鏄繀欏繪崟鑾風殑寮傚父錛屼絾鏄痲uery()鏂規硶涓湪閫昏緫涓婃槸娌℃湁鍔炴硶鎹曡幏瀹冪殑銆傛墍浠od_Johnson鎶婃帴鍙e畾涔夋垚JdbcTemplate鐨刬nner interface銆傝繖灝卞彲浠dbcTemplate灝卞彲浠ユ崟鑾峰畠銆?br />聽聽 鍥炶皟鏂規硶涔熸槸妗嗘灦鐨勪竴縐嶅熀鏈柟娉曪紝姣斿java.io.File綾諱腑鐨刲istFiles(FilenameFilter filter),FilenameFilter灝辨槸涓涓帴鍙o紝鎴戜滑瀹炵幇榪欎釜鎺ュ彛涓殑鏂規硶accept(File dir, String name) 錛岃繖灝辨槸涓涓吀鍨嬬殑鍥炶皟鏂規硶銆?br />聽聽 瑙傚療鑰呮ā寮忕殑浣跨敤絎﹀悎寮闂師鍒欙紝騫朵笖鍒嗙浜嗗叧娉ㄧ偣銆傝繖縐嶅妯″潡淇敼寮鍙戯紝褰卞搷鍏抽棴鐨勫師鍒欎績榪涗簡AOP闈㈠悜鏂歸潰緙栫▼鐨勫彂灞曘係pring涓殑AOP鍙兘灝辨槸榪欑鎬濇兂鐨勫疄鐜幫紝涓漢鐚滄祴鑰屽凡銆偮犅犅犅?br />聽聽聽 鎶婃柟娉曠殑鍙傛暟鏀懼湪涓涓被涓紝榪欐牱浠ュ悗瑕佸鍔犲弬鏁扮殑璇濓紝涓嶇敤淇敼鏂規硶絳懼悕錛屾劅瑙夊緢騫插噣錛屽敮涓鍙兘鐨勭己鐐規槸鍙兘瀵規ц兘鏈夋墍涓嬮檷錛屼笉榪囧緢灝忋傚鏋滄病鏈夌敤EJB鐨勮瘽錛屽簲璇ュ樊涓嶅銆?br />
聽聽 瀵瑰紓甯哥殑澶勭悊錛屽垎涓篶hecked鍜寀nchecked寮傚父錛宑hecked寮傚父鏄戶鎵縥ava.lang.Exception鐨勩俇nchecked寮傚父緇ф壙java.lang.RuntimeException銆俁od_Johnson涓誨紶鍦ㄥ鍑虹幇寮傚父鍚庯紝紼嬪簭涓嶈兘澶勭悊錛屽彧鑳界粰浜堟病鐢ㄧ殑鎻愮ず鏃剁敤RuntimeException錛屽洜涓篟untimeException瀹瑰櫒浼氳嚜鍔ㄥ鐞嗐傚叧浜庡紓甯哥殑璇︾粏璇存槑錛屾垜涔熸病鐪嬫槑鐧斤紝甯屾湜閭d綅澶ц櫨鑳芥寚鐐規寚鐐廣?/font>

澶囨敞錛氭湰鏂囦富瑕佸唴瀹規潵婧愪簬Rod_Johnson鐨勫ぇ浣滐紝寮虹儓寤鴻鐪嬪師鐗堬紒



]]>
Template妯″紡鍜孲trategey妯″紡http://www.aygfsteel.com/97030530/archive/2006/03/29/38131.html閫濆幓鐨勫勾鍗?/dc:creator>閫濆幓鐨勫勾鍗?/author>Wed, 29 Mar 2006 12:49:00 GMThttp://www.aygfsteel.com/97030530/archive/2006/03/29/38131.htmlhttp://www.aygfsteel.com/97030530/comments/38131.htmlhttp://www.aygfsteel.com/97030530/archive/2006/03/29/38131.html#Feedback0http://www.aygfsteel.com/97030530/comments/commentRss/38131.htmlhttp://www.aygfsteel.com/97030530/services/trackbacks/38131.html聽聽聽聽聽聽聽聽聽鍦ㄥ涔燬pring鐨勮繃紼嬩腑緇忓父鐪嬪埌涓浜涘ぇ铏炬帹鑽愰槄璇籖od_Johnson鐨?lt;Expert_One-on-One_J2EE_Design_and_Development>涔?鎹姝や功鐨勭鍥涚珷姣忎釜瀛ava浜洪兘瑕佺湅鐪?濂戒笉瀹規槗鎼炲埌pdf鐗?鍙儨鏄疎鏂囩殑,涓枃鐨勬悶涓嶅埌,娌″姙娉曞彧濂界‖鐫澶寸毊鐪嬩笅鍘匯?br />聽聽聽絎洓绔犱富瑕佽鐨勬槸闈㈠悜瀵硅薄鐨勮璁℃ā寮?鎬庝箞閲囩敤涓鑷寸殑緙栫爜鍏害,鎬庝箞鍒╃敤涔熸湁鐨勭郴緇?榪欏浜庣悊瑙pring妗嗘灦鏈夊緢澶х殑甯姪!鍥犱負榪欐槸Spring涔嬬埗鐨勭紪紼嬫濇兂銆?:
聽聽聽鍏充簬鎺ュ彛鐨勫ソ澶勫強緇勫悎妯″紡鐨勬湁鐐?鎴戣繖閲屽氨涓嶈浜嗐?br />聽聽聽Template妯″紡:閫傜敤鑼冨洿,鎴戜滑鐭ラ亾鏌愪釜涓氬姟鎴栫畻娉曠殑姝ラ,浣嗘槸涓嶇煡閬撴庝箞鎶婃瘡姝ョ殑欏哄簭銆俆emplate妯″紡閲囩敤鍦╝bstract綾諱腑鏈変釜Public and final鐨勬柟娉曞皝瑁呬簡璋冪敤姣忔鐨勯『搴?涔熷氨鏄鎺у埗浜嗗伐浣滄祦紼嬨傛墍鏈夌殑緇ф壙綾諱篃灝卞彧瑕佸疄鐜版瘡姝ョ殑鍏蜂綋鏂規硶銆傝繖鏄帶鍒跺弽杞殑涓縐嶈〃鐜幫紝浠ュ墠閮芥槸鎴戜滑鍦ㄧ▼搴忎腑鍘昏皟鐢ˋPI涓殑鏂規硶,鐜板湪鏄垜浠疄鐜癆PI鏌愪釜綾諱腑鐨勬娊璞℃柟娉曠粰璇ョ被璋冪敤!榪欑鎺у埗鍙嶈漿鐨勬満鍒?鏄鏋剁殑浠g爜鍩虹.姣斿,EJB涓殑Init()鍜宒estory()鏂規硶絳夌瓑.Spring妗嗘灦涓殑瀵規暟鎹寔涔呭眰鐨勫疄鐜板氨鏄緢濂界殑渚嬪瓙!
涓嬮潰鎶婁功涓殑渚嬪瓙COPY涓?
聽 AbstractOrderEJB鐖剁被瀹炵幇浜嗗晢涓氶昏緫,鍖呮嫭鐢ㄦ埛鏄惁閲戦瓚呯幇鍜屽澶х殑璁㈠崟榪涜鎵撴姌,palceOrder()鏂規硶灝辨槸閭d釜宸ヤ綔嫻佹柟娉曘?/font>

abstract class 聽AbstractOrderEJB
{
聽聽聽聽
public final 聽Invoice聽placeOrder聽( int 聽customerId,聽InvoiceItem[]聽items)
聽聽聽聽聽聽聽聽
throws 聽NoSuchCustomerException,聽SpendingLimitViolation聽
聽聽聽聽
{
聽聽聽聽聽聽聽聽
int 聽total聽 = 0 ;
聽聽聽聽聽聽聽聽
for 聽( int 聽i聽 = 0 ;聽i聽 < 聽items.聽length;聽i ++ )聽
聽聽聽聽聽聽聽聽
{
聽聽聽聽聽聽聽聽聽聽聽聽total聽
+= 聽getItemPrice聽(items聽[i])聽 * 聽items聽[i]聽.getQuantity();
聽聽聽聽聽聽聽聽}

聽聽聽聽聽聽聽聽
if 聽(total聽 > 聽getSpendingLimit聽(customerId)聽)
聽聽聽聽聽聽聽聽
{
聽聽聽聽聽聽聽聽聽聽聽聽getSessionContext()聽.setRollbackOnly();
聽聽聽聽聽聽聽聽聽聽聽聽
throw new 聽SpendingLimitViolation聽(total,聽limit);
聽聽聽聽聽聽聽聽}

聽聽聽聽聽聽聽聽
else if 聽(total聽 > 聽DISCOUNT_THRESHOLD)聽
聽聽聽聽聽聽聽聽
{
聽聽聽聽聽聽聽聽聽聽聽聽
// 聽Apply聽discount聽to聽total
聽聽聽聽聽聽聽聽}

聽聽聽聽聽聽聽聽
int 聽invoiceId聽 = 聽placeOrder聽(customerId,聽total,聽items);
聽聽聽聽聽聽聽聽
return new 聽InvoiceImpl聽(iid,聽total);
聽聽聽聽}


聽聽聽聽
protected abstract int 聽getItemPrice(InvoiceItem聽item);

聽聽聽聽
protected abstract int 聽getSpendingLimit(customerId) throws 聽NoSuchCustomerException;

聽聽聽聽
protected abstract int 聽placeOrder( int 聽customerId,聽 int 聽total,InvoiceItem[]聽items);
聽聽}

聽聽聽getItemPrice錛実etSpendingLimit錛宲laceOrder榪欎笁涓柟娉曪紝鏄痯rotected and abstract鐨勶紝鐢卞瓙綾繪潵瀹炵幇銆?/font>
聽聽 Strategey妯″紡鍜孴emplate妯″紡姣旇緝鐩鎬技.鐢⊿trategey妯″紡瀵逛笂涓緥瀛愯繘琛屾敼閫?鎶婁笁涓崟鐙殑鏂規硶鏀懼叆涓涓帴鍙d腑,宸ヤ綔嫻佹柟娉曡繘琛屽涓嬩慨鏀?

聽1 public class 聽OrderEJB
聽2 {
聽3 聽聽聽聽 private 聽DataHelper聽dataHelper;
聽4 聽聽聽聽 public void 聽setDataHelper聽(DataHelper聽newDataHelper)聽
聽5 聽聽聽聽 {
聽6 聽聽聽聽聽聽聽聽 this .dataHelper聽 = 聽newDataHelper;
聽7 聽聽聽聽}

聽8 聽聽聽聽 public final 聽Invoice聽placeOrder聽( int 聽customerId,聽InvoiceItem[]聽items)
聽9 聽聽聽聽聽聽聽聽 throws 聽NoSuchCustomerException,聽SpendingLimitViolation聽
10 聽聽聽聽 {
11 聽聽聽聽聽聽聽聽 int 聽total聽 = 0 ;
12 聽聽聽聽聽聽聽聽 for 聽( int 聽i聽 = 0 ;聽i聽 < 聽items.length;聽i ++ )聽
13 聽聽聽聽聽聽聽聽 {
14 聽聽聽聽聽聽聽聽聽聽聽聽total聽 += this .dataHelper.getItemPrice(items[i])聽 *
15 聽聽聽聽聽聽聽聽聽聽聽聽items[i].getQuantity();
16 聽聽聽聽聽聽聽聽}

17 聽聽聽聽聽聽聽聽 if 聽(total聽 > this .dataHelper.getSpendingLimit(customerId))聽
18 聽聽聽聽聽聽聽聽 {
19 聽聽聽聽聽聽聽聽聽聽聽聽getSessionContext()聽.setRollbackOnly();
20 聽聽聽聽聽聽聽聽聽聽聽聽 throw new 聽SpendingLimitViolation(total,聽limit);
21 聽聽聽聽聽聽聽聽}

22 聽聽聽聽聽聽聽聽 else if 聽(total聽 > 聽DISCOUNT_THRESHOLD)聽
23 聽聽聽聽聽聽聽聽 {
24 聽聽聽聽聽聽聽聽聽聽聽聽 // 聽Apply聽discount聽to聽total
25 聽聽聽聽聽聽聽聽}

26 聽聽聽聽聽聽聽聽 int 聽invoiceId聽 = this .dataHelper.placeOrder聽(customerId,聽total,聽items);
27 聽聽聽聽聽聽聽聽 return new 聽InvoiceImpl聽(iid,聽total);
28 聽聽聽聽}

29 }

聽聽聽Stratery妯″紡姣擳emlater妯″紡澶嶆潅鐐癸紝浣嗘槸瀹冨叿鏈夋洿楂樼殑鐏墊椿鎬э紝瀵逛簬瀹為檯欏圭洰涓浜涙祦紼嬬殑鎺у埗鏈夊緢濂界殑浣滅敤錛佽繖鏄湰浜虹殑瑙傜偣錛屼笉涓瀹氭紜紝浠呬緵鍙傝冦?br />聽聽聽
鍦ㄤ笅闈㈢殑鎯呭喌涓?鐢⊿tratery妯″紡姣擳emlater妯″紡鏇村ソ:
1,姣忔閮芥槸鍙彉鐨?br />2,瀹炵幇姣忔鐨勭被闇瑕佷竴涓嫭绔嬬殑緇ф壙浣撶郴
3,瀹炵幇姣忔鐨勭被瑕佸拰鍏朵粬鐨勭被鎵撲氦閬?br />4,瀹炵幇姣忔鐨勭被瑕佸疄鐜板鎬佹?br />
澶囨敞錛氭湰鏂囦富瑕佸唴瀹規潵婧愪簬Rod_Johnson鐨勫ぇ浣滐紝寮虹儓寤鴻鐪嬪師鐗堬紒



]]>
主站蜘蛛池模板: 凯里市| 张家港市| 浮梁县| 定西市| 通州市| 章丘市| 灵寿县| 越西县| 长子县| 赤峰市| 青冈县| 双城市| 山东省| 宝丰县| 宁化县| 阳春市| 南京市| 斗六市| 永登县| 江川县| 宁乡县| 永顺县| 郧西县| 呼伦贝尔市| 儋州市| 宁远县| 德化县| 车致| 济宁市| 鸡西市| 汝城县| 梨树县| 清远市| 家居| 克东县| 蓬莱市| 德州市| 吉隆县| 贡嘎县| 拉孜县| 岚皋县|