锘??xml version="1.0" encoding="utf-8" standalone="yes"?> eclilpse錛堟棩铓, 鏈堣殌錛?涓?sun hibernate錛堝啲鐪狅級 涓?spring jakarta錛堥泤鍔犺揪錛変笌java tomcat閲屽悇涓粍浠朵粠涓婂埌涓嬶細(xì)catalina錛堣繙紼嬭槳鐐告満錛塼omcat錛堥泟鐚槳鐐告満f14錛塨ootstap
(寮曞錛塭ngine(鍙戝姩鏈猴級host context
]]>
鑰宑hecked exception灝辨槸鍍廔OException榪欐牱鐨勫紓甯?閫氬父鏄渶瑕佺▼搴忓憳鎶涘嚭鐨?涔熸槸閫氳繃try catch鎴栬卼hrow鏉ユ姏鍑虹殑
]]>
import org.apache.struts.util.MessageResources;
MessageResources messages =MessageResources.getMessageResources("cn/edu/ouc/ky2/ApplicationResources");
messages.getMessage("experts.MAJOR_NAME")
2.鏅氱殑java綾?榪欐牱鏇翠負(fù)閫氱敤涓浜?/p>
MessageResources resources =(MessageResources) pageContext.getServletContext().getAttribute(Globals.MESSAGES_KEY);
out.println(resources.getMessage("experts.MAJOR_NAME"));
by zhlmmc
Log4j瀹炲湪鏄緢鐔熸?zhèn)夊Q屽嚑涔庢墍鏈夌殑Java欏圭洰閮界敤瀹冨晩銆備絾鏄垜紜竴鐩存病鏈夋悶鏄庣櫧銆傜粓浜庢湁涓澶╂垜鍙椾笉浜嗕簡錛屽畾涓嬪績鍘葷湅浜嗕竴鎶婃枃妗o紝鎵嶄袱涓皬鏃訛紝鎴戠粓浜庢悶鏄庣櫧浜嗐備竴鑸儏鍐典笅Log4j鎬繪槸鍜?/span>Apache Commons-logging涓璧風(fēng)敤鐨勶紝鎴戜篃灝變竴璧蜂粙緇嶅惂銆傚浜嗕釜涓滆タ涓嶆槸鏇撮夯鐑︼紝鑰屾槸鏇寸畝鍗曪紒
<!--[if !supportLists]-->涓銆?/span><!--[endif]-->Log4j鐨勭畝鍗曟濇兂
Log4j鐪熺殑寰堢畝鍗曪紝綆鍗曞埌浠や漢鍙戞寚鐨勫湴姝ャ備笉鏄璁板綍鏃ュ織鍚楋紵閭e氨緇欎綘涓涓?/span>Log錛岀劧鍚庝綘鐢?/span>Log鏉ュ啓涓滆タ灝辮浜嗭紝鍏堟潵涓涓畬鏁寸被紺轟緥錛?/span>
package test;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class Test {
static Log log = LogFactory.getLog(Test.class);
public void log(){
log.debug("Debug info.");
log.info("Info info");
log.warn("Warn info");
log.error("Error info");
log.fatal("Fatal info");
}
/**
* @param args
*/
public static void main(String[] args) {
Test test = new Test();
test.log();
}
}
鍒曪紝鐪嬪畬榪欑瘒鏂囩珷浣犲氨浼?xì)瑙夊緱寰埥巰鍗曚簡銆?/span>
Log4j榛樿鎶婃棩蹇椾俊鎭垎涓轟簲涓瓑綰?/span>
debug < info < warn < error < fatal
铏界劧鍙互鑷繁娣誨姞絳夌駭錛屼絾鏄垜瑙夊緱娌℃湁蹇呰錛屼簲涓鐢ㄤ簡鍚э紒浣犺鍐欏叆淇℃伅鐨勬椂鍊欏氨鎶婁俊鎭綊涓轟簲涓瓑綰т腑鐨勪竴涓紝鐒跺悗璋冪敤鐩稿簲鐨勫嚱鏁板嵆鍙?/span>
鍒嗕簲涓瓑綰у埌搴曟湁浠涔堢敤鍛紵鏃ュ織淇℃伅鍒板簳鍐欏埌鍝噷鍘諱簡錛?/span>
“LogFactory.getLog(Test.class)”鍙堟槸浠涔堟剰鎬濇崗錛熸帴鐫寰涓嬬湅鍚э紒
Log4j鐨勫叧閿箣澶勫湪浜庡畠鐨勭戶鎵挎濇兂銆備篃灝辨槸涓涓?/span>Log鍙互緇ф壙鍙﹀涓涓?/span>Log鐨勫睘鎬э紙杈撳嚭鍒板摢閲岋紝鏃ュ織絳夌駭錛屾棩蹇楁牸寮忕瓑絳夛級銆傛庝箞緇ф壙錛?/span>
Log4j鏄牴鎹?/span>Log鐨勫悕瀛楁潵鍒ゆ柇緇ф壙鍏崇郴鐨勶紝姣斿錛?/span>
鍚嶅瓧涓?#8220;com.zhlmmc.lib”鐨?/span>Log灝辨槸“com.zhlmmc.lib.log”鐨?/span>parent錛屾槑鐧戒簡鍚э紒Log4j榪樻湁涓涓?/span>rootLogger錛岀浉褰撲簬Java鐨?/span>Object銆?/span>
鍥炶繃澶存潵鐪?#8220;LogFactory.getLog(Test.class)”榪欓噷鐨?#8220;Test.class”浜嬪疄涓婁紶榪涘幓鐨勬槸Test榪欎釜綾葷殑瀹屾暣璺緞錛堝寘鍚?/span>+綾誨悕錛夛紝“test.Test”銆傝繖鏍峰鏋滃瓨鍦?#8220;test”榪欎釜Log閭d箞Test榪欎釜Log灝辯戶鎵垮畠錛屽惁鍒欏氨緇ф壙rootLogger銆?/span>
閭e叿浣撶殑Log灞炴ф槸鍦ㄥ摢閲屽畾涔夌殑鍛紵
<!--[if !supportLists]-->浜屻?/span><!--[endif]-->甯歌鐨勯厤緗枃浠?/span>
铏界劧鍙互鐢?/span>xml鎴栬呭湪榪愯鏃剁敤Java鏉ラ厤緗?/span>Log4j錛屼絾榪樻槸properties鏂囦歡濂界敤鍟婏紒
log4j.rootLogger=info, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
鍒嗘瀽涓涓嬶細(xì)
絎竴琛岋紝閰嶇疆log4j.rootLogger浣犳槑鐧藉惂銆傚簲涓哄畠鏄牴錛屾誨緱閰嶇疆涓涓嬶紝鍚﹀垯鍒殑Log緇ф壙浠涔堝晩銆傚叾浠栫殑Log鍙互閰嶇疆涔熷彲浠ヤ笉閰嶇疆銆傜瓑鍙峰悗闈㈢殑絎竴涓弬鏁拌〃紺烘棩蹇楃駭鍒紝鍙互濉簲涓駭鍒腑鐨勪竴縐嶏紝鍚庨潰鐨勫弬鏁伴兘鏄Log鐭ラ亾杈撳嚭鍒板摢閲岋紝濡傛灉浣犳兂璁╂棩蹇楄緭鍑哄埌涓や釜鍦版柟灝卞姞涓や釜杈撳嚭鍙傛暟錛屾瘮濡傦細(xì)
log4j.rootLogger=info, stdout, file
榪欓噷鐨?/span>info琛ㄧず錛岃Log鐨勬棩蹇楃駭鍒負(fù)info錛屾墍鏈夌駭鍒皬浜?/span>info鐨勬棩蹇楅兘涓嶄細(xì)琚褰曘傛瘮濡備嬌鐢ㄨ繖涓厤緗枃浠剁殑璇濓紝鎴戝垰寮濮嬩婦鐨勯偅涓被涓?/span>
log.debug("Debug info.");
榪欏彞璇濇槸涓嶈搗浣滅敤鐨勶紝鍥犱負(fù)debug鐨勭駭鍒皬浜?/span>info銆傝繖鏍峰氨寰堝鏄撴帶鍒朵粈涔堜俊鎭湪璋冭瘯鐨勬椂鍊欒鏄劇ず錛屼粈涔堜俊鎭湪鍙戝竷鐨勬椂鍊欒鍘繪帀銆傝繖浜涢兘涓嶇敤鏀逛唬鐮侊紝寰堟柟渚垮惂銆?/span>
浣嗭紝stdout鍜?/span>file鍙堟槸浠涔堝憿錛?/span>
鎺ョ潃寰涓嬬湅錛屽氨鏄厤緗?/span>stdout浜嗭紝榪欎釜鍚嶅瓧鏄殢渚垮彇鐨勶紝浣犲彲浠ュ彨瀹?/span>A錛?/span>
log4j.appender.A=org.apache.log4j.ConsoleAppender
閭d箞涓婇潰鐨?/span>rootLogger鐨勫弬鏁?/span>stdout涔熻鏀規(guī)垚A錛屽叾浠栫敤鍒扮殑鍦版柟褰撶劧涔熻鏀廣傝繖閲岀殑鍏抽敭涓嶆槸鍚嶅瓧錛岃屾槸appender綾誨瀷錛屾瘮濡傝繖閲岀殑“ConsoleAppender”錛岀湅鏄庣櫧浜嗗惂錛岃緭鍑哄埌Console銆傚悗闈袱琛岄兘鏄緗棩蹇楁牸寮忕殑錛屼竴鑸儏鍐典笅浣犲氨鐓ф妱鍚с傛棦鐒舵槸鏈綆鍏ラ棬鍏蟲敞浜庣悊瑙?/span>Log4j鐨勫伐浣滃師鐞嗭紝鎴戝氨涓嶄粙緇?/span>file綾誨瀷鐨?/span>appender浜嗭紝涓鎼滀竴澶ф妸銆?/span>
鍦ㄥ疄闄呯殑欏圭洰寮鍙戜腑錛屽緢鍙兘閬囧埌鎵寮曠敤鐨勫寘鐢?/span>Log4j鏉ヨ褰曟棩蹇楋紝姣斿Hibernate銆傞偅涔堝湪榪欓噷浣犲彲浠ュ緢瀹規(guī)槗鐨勬帶鍒惰繖涓寘濡備綍璁板綍鏃ュ織銆傛瘮濡傚湪涓婇潰鐨勯厤緗枃浠朵腑鍔犱竴琛岋細(xì)
log4j.logger.org.hibernate=fatal
閭d箞鎵鏈?/span>org.hibernate鍖呬笅闈㈢殑綾誨氨鍙細(xì)鏄劇ず寰堝皯鐨勪俊鎭紝鍥犱負(fù)fatal鐨勭駭鍒渶楂樺晩銆?/span>
<!--[if !supportLists]-->涓夈?/span><!--[endif]-->閮ㄧ講
鍒曪紝榪欏彲涓嶆槸閮ㄧ講Tomcat銆傛妸log4j鐨勫寘鍜?/span>commons-logging鐨勫寘錛堝姞鍦ㄤ竴璧鋒墠涓や釜錛夋斁鍒?/span>classpath涓嬮潰銆傜劧鍚庢妸閰嶇疆鏂囦歡淇濆瓨涓?/span>log4j.properties錛屼篃鏀懼湪classpath涓嬮潰錛堝鏋滅敤Eclipse鐨勮瘽錛屾斁鍦?/span>src鐩綍涓嬪嵆鍙級銆傜劧鍚庝綘灝卞彲浠ヨ窇浜嗐?/span>
涓轟綍浣跨敤?
宸ュ巶妯″紡鏄垜浠渶甯哥敤鐨勬ā寮忎簡,钁楀悕鐨凧ive璁哄潧 ,灝卞ぇ閲忎嬌鐢ㄤ簡宸ュ巶妯″紡錛屽伐鍘傛ā寮忓湪Java紼嬪簭緋葷粺鍙互璇存槸闅忓鍙銆?/span>
涓轟粈涔堝伐鍘傛ā寮忔槸濡傛甯哥敤錛熷洜涓哄伐鍘傛ā寮忓氨鐩稿綋浜庡垱寤哄疄渚嬪璞$殑new錛屾垜浠粡甯歌鏍規(guī)嵁綾籆lass鐢熸垚瀹炰緥瀵硅薄錛屽A a=new A() 宸ュ巶妯″紡涔熸槸鐢ㄦ潵鍒涘緩瀹炰緥瀵硅薄鐨勶紝鎵浠ヤ互鍚巒ew鏃跺氨瑕佸涓績鐪鹼紝鏄惁鍙互鑰冭檻瀹炵敤宸ュ巶妯″紡錛岃櫧鐒惰繖鏍峰仛錛屽彲鑳藉鍋氫竴浜涘伐浣滐紝浣嗕細(xì)緇欎綘緋葷粺甯︽潵鏇村ぇ鐨勫彲鎵╁睍鎬у拰灝介噺灝戠殑淇敼閲忋?/span>
鎴戜滑浠ョ被Sample涓轟緥錛?濡傛灉鎴戜滑瑕佸垱寤篠ample鐨勫疄渚嬪璞?
Sample sample=new Sample();
鍙槸錛屽疄闄呮儏鍐墊槸錛岄氬父鎴戜滑閮借鍦ㄥ垱寤?span lang="EN-US">sample瀹炰緥鏃跺仛鐐瑰垵濮嬪寲鐨勫伐浣?姣斿璧嬪?鏌ヨ鏁版嵁搴撶瓑銆?/span>
棣栧厛錛屾垜浠兂鍒扮殑鏄紝鍙互浣跨敤Sample鐨勬瀯閫犲嚱鏁幫紝榪欐牱鐢熸垚瀹炰緥灝卞啓鎴?
Sample sample=new Sample(鍙傛暟);
浣嗘槸錛屽鏋滃垱寤?span lang="EN-US">sample瀹炰緥鏃舵墍鍋氱殑鍒濆鍖栧伐浣滀笉鏄薄璧嬪艱繖鏍風(fēng)畝鍗曠殑浜嬶紝鍙兘鏄緢闀夸竴孌典唬鐮侊紝濡傛灉涔熷啓鍏ユ瀯閫犲嚱鏁頒腑錛岄偅浣犵殑浠g爜寰堥毦鐪嬩簡錛堝氨闇瑕丷efactor閲嶆暣錛夈?/span>
涓轟粈涔堣浠g爜寰堥毦鐪嬶紝鍒濆鑰呭彲鑳芥病鏈夎繖縐嶆劅瑙夛紝鎴戜滑鍒嗘瀽濡備笅錛屽垵濮嬪寲宸ヤ綔濡傛灉鏄緢闀夸竴孌典唬鐮侊紝璇存槑瑕佸仛鐨勫伐浣滃緢澶氾紝灝嗗緢澶氬伐浣滆鍏ヤ竴涓柟娉曚腑錛岀浉褰撲簬灝嗗緢澶氶浮铔嬫斁鍦ㄤ竴涓瀛愰噷錛屾槸寰堝嵄闄╃殑錛岃繖涔熸槸鏈夎儗浜?span lang="EN-US">Java闈㈠悜瀵硅薄鐨勫師鍒欙紝闈㈠悜瀵硅薄鐨勫皝瑁?Encapsulation)鍜屽垎媧?Delegation)鍛婅瘔鎴戜滑錛屽敖閲忓皢闀跨殑浠g爜鍒嗘淳“鍒囧壊”鎴愭瘡孌碉紝灝嗘瘡孌靛啀“灝佽”璧鋒潵(鍑忓皯孌靛拰孌典箣闂村伓鍚堣仈緋繪?錛岃繖鏍鳳紝灝變細(xì)灝嗛闄╁垎鏁o紝浠ュ悗濡傛灉闇瑕佷慨鏀癸紝鍙鏇存敼姣忔錛屼笉浼?xì)鍐嶅彂鐢熺壍涓鍔ㄧ櫨鐨勪簨鎯呫?/span>
鍦ㄦ湰渚嬩腑錛岄鍏堬紝鎴戜滑闇瑕佸皢鍒涘緩瀹炰緥鐨勫伐浣滀笌浣跨敤瀹炰緥鐨勫伐浣滃垎寮, 涔熷氨鏄錛岃鍒涘緩瀹炰緥鎵闇瑕佺殑澶ч噺鍒濆鍖栧伐浣滀粠Sample鐨勬瀯閫犲嚱鏁頒腑鍒嗙鍑哄幓銆?/span>
榪欐椂鎴戜滑灝遍渶瑕?span lang="EN-US">Factory宸ュ巶妯″紡鏉ョ敓鎴愬璞′簡錛屼笉鑳藉啀鐢ㄤ笂闈㈢畝鍗昻ew Sample(鍙傛暟)銆?/span>榪樻湁,濡傛灉Sample鏈変釜緇ф壙濡侻ySample, 鎸夌収闈㈠悜鎺ュ彛緙栫▼,鎴戜滑闇瑕佸皢Sample鎶借薄鎴愪竴涓帴鍙?鐜板湪Sample鏄帴鍙?鏈変袱涓瓙綾籑ySample 鍜孒isSample .鎴戜滑瑕佸疄渚嬪寲浠栦滑鏃?濡備笅:
Sample mysample=new MySample();
Sample hissample=new HisSample();
闅忕潃欏圭洰鐨勬繁鍏?span lang="EN-US">,Sample鍙兘榪樹細(xì)"鐢熷嚭寰堝鍎垮瓙鍑烘潵", 閭d箞鎴戜滑瑕佸榪欎簺鍎垮瓙涓涓釜瀹炰緥鍖?鏇寸碂緋曠殑鏄?鍙兘榪樿瀵逛互鍓嶇殑浠g爜榪涜淇敼:鍔犲叆鍚庢潵鐢熷嚭鍎垮瓙鐨勫疄渚?榪欏湪浼犵粺紼嬪簭涓槸鏃犳硶閬垮厤鐨?
浣嗗鏋滀綘涓寮濮嬪氨鏈夋剰璇嗕嬌鐢ㄤ簡宸ュ巶妯″紡,榪欎簺楹葷儲灝辨病鏈変簡.
宸ュ巶鏂規(guī)硶
浣犱細(xì)寤虹珛涓涓笓闂ㄧ敓浜?span lang="EN-US">Sample瀹炰緥鐨勫伐鍘?
public class Factory{ 銆銆public static Sample creator(int which){ 銆銆//getClass 浜х敓Sample 涓鑸彲浣跨敤鍔ㄦ佺被瑁呰澆瑁呭叆綾匯?br />
銆銆if (which==1) 銆銆} } |
閭d箞鍦ㄤ綘鐨勭▼搴忎腑,濡傛灉瑕佸疄渚嬪寲Sample鏃?灝變嬌鐢?/span>
Sample sampleA=Factory.creator(1);
榪欐牱,鍦ㄦ暣涓氨涓嶆秹鍙婂埌Sample鐨勫叿浣撳瓙綾?杈懼埌灝佽鏁堟灉,涔熷氨鍑忓皯閿欒淇敼鐨勬満浼?榪欎釜鍘熺悊鍙互鐢ㄥ緢閫氫織鐨勮瘽鏉ユ瘮鍠?灝辨槸鍏蜂綋浜嬫儏鍋氬緱瓚婂,瓚婂鏄撹寖閿欒.榪欐瘡涓仛榪囧叿浣撳伐浣滅殑浜洪兘娣辨湁浣撲細(xì),鐩稿弽,瀹樺仛寰楄秺楂?璇村嚭鐨勮瘽瓚婃娊璞¤秺絎肩粺,鑼冮敊璇彲鑳芥у氨瓚婂皯.濂借薄鎴戜滑浠庣紪紼嬪簭涓篃鑳芥?zhèn)熷囖Z漢鐢熼亾鐞?鍛靛懙.
浣跨敤宸ュ巶鏂規(guī)硶 瑕佹敞鎰忓嚑涓鑹詫紝棣栧厛浣犺瀹氫箟浜у搧鎺ュ彛錛屽涓婇潰鐨凷ample,浜у搧鎺ュ彛涓嬫湁Sample鎺ュ彛鐨勫疄鐜扮被,濡係ampleA,鍏舵瑕佹湁涓涓猣actory綾伙紝鐢ㄦ潵鐢熸垚浜у搧Sample錛屽涓嬪浘錛屾渶鍙寵竟鏄敓浜х殑瀵硅薄Sample錛?/p>
榪涗竴姝ョ◢寰鏉備竴鐐癸紝灝辨槸鍦ㄥ伐鍘傜被涓婅繘琛屾嫇灞曪紝宸ュ巶綾諱篃鏈夌戶鎵垮畠鐨勫疄鐜扮被concreteFactory浜?strong>銆?/em>
鎶借薄宸ュ巶
宸ュ巶妯″紡涓湁: 宸ュ巶鏂規(guī)硶(Factory Method) 鎶借薄宸ュ巶(Abstract Factory).
榪欎袱涓ā寮忓尯鍒湪浜庨渶瑕佸垱寤哄璞$殑澶嶆潅紼嬪害涓娿傚鏋滄垜浠垱寤哄璞$殑鏂規(guī)硶鍙樺緱澶嶆潅浜?濡備笂闈㈠伐鍘傛柟娉曚腑鏄垱寤轟竴涓璞ample,濡傛灉鎴戜滑榪樻湁鏂扮殑浜у搧鎺ュ彛Sample2.
榪欓噷鍋囪錛歋ample鏈変袱涓猚oncrete綾籗ampleA鍜孲amleB錛岃孲ample2涔熸湁涓や釜concrete綾籗ample2A鍜孲ampleB2
閭d箞錛屾垜浠氨灝嗕笂渚嬩腑Factory鍙樻垚鎶借薄綾?灝嗗叡鍚岄儴鍒嗗皝瑁呭湪鎶借薄綾諱腑,涓嶅悓閮ㄥ垎浣跨敤瀛愮被瀹炵幇錛屼笅闈㈠氨鏄皢涓婁緥涓殑Factory鎷撳睍鎴愭娊璞″伐鍘?
public abstract class Factory{ 銆銆public abstract Sample creator(); 銆銆public abstract Sample2 creator(String name); } public class SimpleFactory extends Factory{ 銆銆public Sample creator(){ 銆銆public Sample2 creator(String name){ } public class BombFactory extends Factory{ 銆銆public Sample creator(){ 銆銆public Sample2 creator(String name){ }
|
浠庝笂闈㈢湅鍒頒袱涓伐鍘傚悇鑷敓浜у嚭涓濂桽ample鍜孲ample2,涔熻浣犱細(xì)鐤戦棶錛屼負(fù)浠涔堟垜涓嶅彲浠ヤ嬌鐢ㄤ袱涓伐鍘傛柟娉曟潵鍒嗗埆鐢熶駭Sample鍜孲ample2?
鎶借薄宸ュ巶榪樻湁鍙﹀涓涓叧閿鐐癸紝鏄洜涓?SimpleFactory鍐咃紝鐢熶駭Sample鍜岀敓浜ample2鐨勬柟娉曚箣闂存湁涓瀹氳仈緋伙紝鎵浠ユ墠瑕佸皢榪欎袱涓柟娉曟崋緇戝湪涓涓被涓紝榪欎釜宸ュ巶綾繪湁鍏舵湰韜壒寰侊紝涔熻鍒墮犺繃紼嬫槸緇熶竴鐨勶紝姣斿錛氬埗閫犲伐鑹烘瘮杈冪畝鍗曪紝鎵浠ュ悕縐板彨SimpleFactory銆?/span>
鍦ㄥ疄闄呭簲鐢ㄤ腑錛屽伐鍘傛柟娉曠敤寰楁瘮杈冨涓浜涳紝鑰屼笖鏄拰鍔ㄦ佺被瑁呭叆鍣ㄧ粍鍚堝湪涓璧峰簲鐢紝
涓句緥
鎴戜滑浠?span lang="EN-US">Jive鐨凢orumFactory涓轟緥錛岃繖涓緥瀛愬湪鍓嶉潰鐨凷ingleton妯″紡涓垜浠璁鴻繃錛岀幇鍦ㄥ啀璁ㄨ鍏跺伐鍘傛ā寮?
public abstract class ForumFactory { 銆銆private static Object initLock = new Object(); 銆銆public static ForumFactory getInstance(Authorization authorization) { 銆銆銆銆銆銆銆銆銆銆try { 銆銆銆銆//Now, 榪斿洖 proxy.鐢ㄦ潵闄愬埗鎺堟潈瀵筬orum鐨勮闂?br />
銆銆銆銆return new ForumFactoryProxy(authorization, factory, 銆銆//鐪熸鍒涘緩forum鐨勬柟娉曠敱緇ф壙forumfactory鐨勫瓙綾誨幓瀹屾垚. 銆銆.... }
|
鍥犱負(fù)鐜板湪鐨?span lang="EN-US">Jive鏄氳繃鏁版嵁搴撶郴緇熷瓨鏀捐鍧涘笘瀛愮瓑鍐呭鏁版嵁,濡傛灉甯屾湜鏇存敼涓洪氳繃鏂囦歡緋葷粺瀹炵幇,榪欎釜宸ュ巶鏂規(guī)硶ForumFactory灝辨彁渚涗簡鎻愪緵鍔ㄦ佹帴鍙?
private static String className = "com.jivesoftware.forum.database.DbForumFactory";
浣犲彲浠ヤ嬌鐢ㄨ嚜宸卞紑鍙戠殑鍒涘緩forum鐨勬柟娉曚唬鏇縞om.jivesoftware.forum.database.DbForumFactory灝卞彲浠?
鍦ㄤ笂闈㈢殑涓孌典唬鐮佷腑涓鍏辯敤浜嗕笁縐嶆ā寮?span lang="EN-US">,闄や簡宸ュ巶妯″紡澶?榪樻湁Singleton鍗曟佹ā寮?浠ュ強proxy妯″紡,proxy妯″紡涓昏鐢ㄦ潵鎺堟潈鐢ㄦ埛瀵筬orum鐨勮闂?鍥犱負(fù)璁塊棶forum鏈変袱縐嶄漢:涓涓槸娉ㄥ唽鐢ㄦ埛 涓涓槸娓稿guest,閭d箞閭d箞鐩稿簲鐨勬潈闄愬氨涓嶄竴鏍?鑰屼笖榪欎釜鏉冮檺鏄瘡絀挎暣涓郴緇熺殑,鍥犳寤虹珛涓涓猵roxy,綾諱技緗戝叧鐨勬蹇?鍙互寰堝ソ鐨勮揪鍒拌繖涓晥鏋?
鐪嬬湅Java瀹犵墿搴椾腑鐨凜atalogDAOFactory:
public class CatalogDAOFactory {
銆銆/** 銆銆* 鏈柟娉曞埗瀹氫竴涓壒鍒殑瀛愮被鏉ュ疄鐜癉AO妯″紡銆?br /> 銆銆* 鍏蜂綋瀛愮被瀹氫箟鏄湪J2EE鐨勯儴緗叉弿榪板櫒涓?br /> 銆銆*/ 銆銆public static CatalogDAO getDAO() throws CatalogDAOSysException { 銆銆銆銆CatalogDAO catDao = null; 銆銆銆銆try { 銆銆銆銆銆銆InitialContext ic = new InitialContext(); 銆銆銆銆銆銆String className =(String) ic.lookup(JNDINames.CATALOG_DAO_CLASS); 銆銆銆銆銆銆catDao = (CatalogDAO) Class.forName(className).newInstance(); 銆銆銆銆} catch (NamingException ne) { 銆銆銆銆銆銆throw new CatalogDAOSysException(" 銆銆銆銆} catch (Exception se) { 銆銆銆銆銆銆throw new CatalogDAOSysException(" 銆銆銆銆} 銆銆銆銆return catDao; 銆銆} } |
CatalogDAOFactory鏄吀鍨嬬殑宸ュ巶鏂規(guī)硶錛宑atDao鏄氳繃鍔ㄦ佺被瑁呭叆鍣╟lassName鑾峰緱CatalogDAOFactory鍏蜂綋瀹炵幇瀛愮被錛岃繖涓疄鐜板瓙綾誨湪Java瀹犵墿搴楁槸鐢ㄦ潵鎿嶄綔catalog鏁版嵁搴擄紝鐢ㄦ埛鍙互鏍規(guī)嵁鏁版嵁搴撶殑綾誨瀷涓嶅悓錛屽畾鍒惰嚜宸辯殑鍏蜂綋瀹炵幇瀛愮被錛屽皢鑷繁鐨勫瓙綾誨悕緇欎笌CATALOG_DAO_CLASS鍙橀噺灝卞彲浠ャ?/span>
鐢辨鍙錛屽伐鍘傛柟娉曠‘瀹炰負(fù)緋葷粺緇撴瀯鎻愪緵浜嗛潪甯哥伒媧誨己澶х殑鍔ㄦ佹墿灞曟満鍒訛紝鍙鎴戜滑鏇存崲涓涓嬪叿浣撶殑宸ュ巶鏂規(guī)硶錛岀郴緇熷叾浠栧湴鏂規(guī)棤闇涓鐐瑰彉鎹紝灝辨湁鍙兘灝嗙郴緇熷姛鑳借繘琛屾敼澶存崲闈㈢殑鍙樺寲銆?/p>
璁捐妯″紡濡備綍鍦ㄥ叿浣撻」鐩腑搴旂敤瑙?a target="_blank">銆奐ava瀹炵敤緋葷粺寮鍙戞寚鍗椼?/a>