Spring瀹氭椂浠诲姟鐨勫嚑绉嶅疄鐜? 涓€锛庡垎绫?鈥粠瀹炵幇鐨勬妧鏈笂鏉ュ垎绫伙紝鐩墠涓昏鏈変笁绉嶆妧鏈紙鎴栬€呰鏈変笁绉嶄骇鍝侊級锛?1.Java鑷甫鐨刯ava.util.Timer绫伙紝杩欎釜绫诲厑璁镐綘璋冨害涓€涓猨ava.util.TimerTask浠诲姟銆備娇鐢ㄨ繖绉嶆柟寮忓彲浠ヨ浣犵殑绋嬪簭鎸夌収鏌愪竴涓搴︽墽琛岋紝浣嗕笉鑳藉湪鎸囧畾鏃堕棿杩愯銆備竴鑸敤鐨勮緝灏戯紝杩欑瘒鏂囩珷灏嗕笉鍋氳缁嗕粙缁嶃€?2.浣跨敤Quartz锛岃繖鏄竴涓姛鑳芥瘮杈冨己澶х殑鐨勮皟搴﹀櫒锛屽彲浠ヨ浣犵殑绋嬪簭鍦ㄦ寚瀹氭椂闂存墽琛岋紝涔熷彲浠ユ寜鐓ф煇涓€涓搴︽墽琛岋紝閰嶇疆璧锋潵绋嶆樉澶嶆潅锛岀◢鍚庝細璇︾粏浠嬬粛銆?3.Spring3.0浠ュ悗鑷甫鐨則ask锛屽彲浠ュ皢瀹冪湅鎴愪竴涓交閲忕骇鐨凲uartz锛岃€屼笖浣跨敤璧锋潵姣擰uartz绠€鍗曡澶氾紝绋嶅悗浼氫粙缁嶃€?鈥粠浣滀笟绫荤殑缁ф壙鏂瑰紡鏉ヨ锛屽彲浠ュ垎涓轰袱绫伙細 1.浣滀笟绫婚渶瑕佺户鎵胯嚜鐗瑰畾鐨勪綔涓氱被鍩虹被锛屽Quartz涓渶瑕佺户鎵胯嚜org.springframework.scheduling.quartz.QuartzJobBean锛沯ava.util.Timer涓渶瑕佺户鎵胯嚜java.util.TimerTask銆?2.浣滀笟绫诲嵆鏅€氱殑java绫伙紝涓嶉渶瑕佺户鎵胯嚜浠讳綍鍩虹被銆?娉?涓汉鎺ㄨ崘浣跨敤绗簩绉嶆柟寮忥紝鍥犱负杩欐牱鎵€浠ョ殑绫婚兘鏄櫘閫氱被锛屼笉闇€瑕佷簨鍏堝尯鍒寰呫€? 鈥粠浠诲姟璋冨害鐨勮Е鍙戞椂鏈烘潵鍒嗭紝杩欓噷涓昏鏄拡瀵逛綔涓氫娇鐢ㄧ殑瑙﹀彂鍣紝涓昏鏈変互涓嬩袱绉嶏細 1.姣忛殧鎸囧畾鏃堕棿鍒欒Е鍙戜竴娆★紝鍦≦uartz涓搴旂殑瑙﹀彂鍣ㄤ负锛歰rg.springframework.scheduling.quartz.SimpleTriggerBean 2.姣忓埌鎸囧畾鏃堕棿鍒欒Е鍙戜竴娆★紝鍦≦uartz涓搴旂殑璋冨害鍣ㄤ负锛歰rg.springframework.scheduling.quartz.CronTriggerBean 娉細骞堕潪姣忕浠诲姟閮藉彲浠ヤ娇鐢ㄨ繖涓ょ瑙﹀彂鍣紝濡俲ava.util.TimerTask浠诲姟灏卞彧鑳戒娇鐢ㄧ涓€绉嶃€俀uartz鍜宻pringtask閮藉彲浠ユ敮鎸佽繖涓ょ瑙﹀彂鏉′欢銆? 浜岋紟鐢ㄦ硶璇存槑 璇︾粏浠嬬粛姣忕浠诲姟璋冨害宸ュ叿鐨勪娇鐢ㄦ柟寮忥紝鍖呮嫭Quartz鍜宻pringtask涓ょ銆? Quartz 绗竴绉嶏紝浣滀笟绫荤户鎵胯嚜鐗瑰畾鐨勫熀绫伙細org.springframework.scheduling.quartz.QuartzJobBean銆?绗竴姝ワ細瀹氫箟浣滀笟绫? importorg.quartz.JobExecutionContext; importorg.quartz.JobExecutionException; importorg.springframework.scheduling.quartz.QuartzJobBean; publicclassJob1extendsQuartzJobBean{
privateinttimeout; privatestaticinti=0; //璋冨害宸ュ巶瀹炰緥鍖栧悗锛岀粡杩噒imeout鏃堕棿寮€濮嬫墽琛岃皟搴?publicvoidsetTimeout(inttimeout){ this.timeout=timeout; }
/ 瑕佽皟搴︾殑鍏蜂綋浠诲姟 / @Override protectedvoidexecuteInternal(JobExecutionContextcontext) throwsJobExecutionException{ System.out.println("瀹氭椂浠诲姟鎵ц涓€?); } }绗簩姝ワ細spring閰嶇疆鏂囦欢涓厤缃綔涓氱被JobDetailBean
璇存槑锛歰rg.springframework.scheduling.quartz.JobDetailBean鏈変袱涓睘鎬э紝jobClass灞炴€у嵆鎴戜滑鍦╦ava浠g爜涓畾涔夌殑浠诲姟绫伙紝jobDataAsMap灞炴€у嵆璇ヤ换鍔$被涓渶瑕佹敞鍏ョ殑灞炴€у€笺€? 绗笁姝ワ細閰嶇疆浣滀笟璋冨害鐨勮Е鍙戞柟寮忥紙瑙﹀彂鍣級
Quartz鐨勪綔涓氳Е鍙戝櫒鏈変袱绉嶏紝鍒嗗埆鏄? org.springframework.scheduling.quartz.SimpleTriggerBean
org.springframework.scheduling.quartz.CronTriggerBean
绗竴绉峉impleTriggerBean锛屽彧鏀寔鎸夌収涓€瀹氶搴﹁皟鐢ㄤ换鍔★紝濡傛瘡闅?0鍒嗛挓杩愯涓€娆°€? 閰嶇疆鏂瑰紡濡備笅锛?
绗簩绉岰ronTriggerBean锛屾敮鎸佸埌鎸囧畾鏃堕棿杩愯涓€娆★紝濡傛瘡澶?2:00杩愯涓€娆$瓑銆? 閰嶇疆鏂瑰紡濡備笅锛?
鍏充簬cronExpression琛ㄨ揪寮忕殑璇硶鍙傝闄勫綍銆? 绗洓姝ワ細閰嶇疆璋冨害宸ュ巶
璇存槑锛氳鍙傛暟鎸囧畾鐨勫氨鏄箣鍓嶉厤缃殑瑙﹀彂鍣ㄧ殑鍚嶅瓧銆? 绗簲姝ワ細鍚姩浣犵殑搴旂敤鍗冲彲锛屽嵆灏嗗伐绋嬮儴缃茶嚦tomcat鎴栧叾浠栧鍣ㄣ€? 绗簩绉嶏紝浣滀笟绫讳笉缁ф壙鐗瑰畾鍩虹被銆?Spring鑳藉鏀寔杩欑鏂瑰紡锛屽綊鍔熶簬涓や釜绫伙細
org.springframework.scheduling.timer.MethodInvokingTimerTaskFactoryBean
org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean
杩欎袱涓被鍒嗗埆瀵瑰簲spring鏀寔鐨勪袱绉嶅疄鐜颁换鍔¤皟搴︾殑鏂瑰紡锛屽嵆鍓嶆枃鎻愬埌鍒癹ava鑷甫鐨則imertask鏂瑰紡鍜孮uartz鏂瑰紡銆傝繖閲屾垜鍙啓MethodInvokingJobDetailFactoryBean鐨勭敤娉曪紝 浣跨敤璇ョ被鐨勫ソ澶勬槸,鎴戜滑鐨勪换鍔$被涓嶅啀闇€瑕佺户鎵胯嚜浠讳綍绫伙紝鑰屾槸鏅€氱殑pojo銆? 绗竴姝ワ細缂栧啓浠诲姟绫? publicclassJob2{ publicvoiddoJob2(){ System.out.println("涓嶇户鎵縌uartzJobBean鏂瑰紡-璋冨害杩涜涓?.."); } }鍙互鐪嬪嚭锛岃繖灏辨槸涓€涓櫘閫氱殑绫伙紝骞朵笖鏈変竴涓柟娉曘€? 绗簩姝ワ細閰嶇疆浣滀笟绫? class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
璇存槑锛氳繖涓€姝ユ槸鍏抽敭姝ラ锛屽0鏄庝竴涓狹ethodInvokingJobDetailFactoryBean锛屾湁涓や釜鍏抽敭灞炴€э細targetObject鎸囧畾浠诲姟绫伙紝targetMethod鎸囧畾杩愯鐨勬柟娉曘€傚線涓嬬殑姝ラ灏变笌鏂规硶涓€鐩稿悓浜嗭紝涓轰簡瀹屾暣锛屽悓鏍疯创鍑恒€? 绗笁姝ワ細閰嶇疆浣滀笟璋冨害鐨勮Е鍙戞柟寮忥紙瑙﹀彂鍣級
Quartz鐨勪綔涓氳Е鍙戝櫒鏈変袱绉嶏紝鍒嗗埆鏄? org.springframework.scheduling.quartz.SimpleTriggerBean
org.springframework.scheduling.quartz.CronTriggerBean
绗竴绉峉impleTriggerBean锛屽彧鏀寔鎸夌収涓€瀹氶搴﹁皟鐢ㄤ换鍔★紝濡傛瘡闅?0鍒嗛挓杩愯涓€娆°€? 閰嶇疆鏂瑰紡濡備笅锛?
绗簩绉岰ronTriggerBean锛屾敮鎸佸埌鎸囧畾鏃堕棿杩愯涓€娆★紝濡傛瘡澶?2:00杩愯涓€娆$瓑銆? 閰嶇疆鏂瑰紡濡備笅锛?
浠ヤ笂涓ょ璋冨害鏂瑰紡鏍规嵁瀹為檯鎯呭喌锛屼换閫変竴绉嶅嵆鍙€? 绗洓姝ワ細閰嶇疆璋冨害宸ュ巶
璇存槑锛氳鍙傛暟鎸囧畾鐨勫氨鏄箣鍓嶉厤缃殑瑙﹀彂鍣ㄧ殑鍚嶅瓧銆? 绗簲姝ワ細鍚姩浣犵殑搴旂敤鍗冲彲锛屽嵆灏嗗伐绋嬮儴缃茶嚦tomcat鎴栧叾浠栧鍣ㄣ€?
鍒版锛宻pring涓璔uartz鐨勫熀鏈厤缃氨浠嬬粛瀹屼簡锛屽綋鐒朵簡锛屼娇鐢ㄤ箣鍓嶏紝瑕佸鍏ョ浉搴旂殑spring鐨勫寘涓嶲uartz鐨勫寘锛岃繖浜涘氨涓嶆秷澶氳浜嗐€? 鍏跺疄鍙互鐪嬪嚭Quartz鐨勯厤缃湅涓婂幓杩樻槸鎸哄鏉傜殑锛屾病鏈夊姙娉曪紝鍥犱负Quartz鍏跺疄鏄釜閲嶉噺绾х殑宸ュ叿锛屽鏋滄垜浠彧鏄兂绠€鍗曠殑鎵ц鍑犱釜绠€鍗曠殑瀹氭椂浠诲姟锛屾湁娌℃湁鏇寸畝鍗曠殑宸ュ叿锛屾湁锛? 璇风湅鎴戠涓嬫枃Springtask鐨勪粙缁嶃€?
Spring-Task 涓婅妭浠嬬粛浜嗗湪Spring涓娇鐢≦uartz锛屾湰鏂囦粙缁峉pring3.0浠ュ悗鑷富寮€鍙戠殑瀹氭椂浠诲姟宸ュ叿锛宻pringtask锛屽彲浠ュ皢瀹冩瘮浣滀竴涓交閲忕骇鐨凲uartz锛岃€屼笖浣跨敤璧锋潵寰堢畝鍗曪紝闄pring鐩稿叧鐨勫寘澶栦笉闇€瑕侀澶栫殑鍖咃紝 鑰屼笖鏀寔娉ㄨВ鍜岄厤缃枃浠朵袱绉? 褰㈠紡锛屼笅闈㈠皢鍒嗗埆浠嬬粛杩欎袱绉嶆柟寮忋€? 绗竴绉嶏細閰嶇疆鏂囦欢鏂瑰紡 绗竴姝ワ細缂栧啓浣滀笟绫? 鍗虫櫘閫氱殑pojo锛屽涓嬶細
importorg.springframework.stereotype.Service; @Service publicclassTaskJob{
publicvoidjob1(){ System.out.println(鈥滀换鍔¤繘琛屼腑銆傘€傘€傗€?; } }绗簩姝ワ細鍦╯pring閰嶇疆鏂囦欢澶翠腑娣诲姞鍛藉悕绌洪棿鍙婃弿杩? xmlns:task="http://www.springframework.org/schema/task" 銆傘€傘€傘€傘€傘€?xsi:schemaLocation="http://www.springframework.org/schema/taskhttp://www.springframework.org/schema/task/spring-task-3.0.xsd">绗笁姝ワ細spring閰嶇疆鏂囦欢涓缃叿浣撶殑浠诲姟
璇存槑锛歳ef鍙傛暟鎸囧畾鐨勫嵆浠诲姟绫伙紝method鎸囧畾鐨勫嵆闇€瑕佽繍琛岀殑鏂规硶锛宑ron鍙奵ronExpression琛ㄨ揪寮忥紝鍏蜂綋鍐欐硶杩欓噷涓嶄粙缁嶄簡锛岃鎯呰涓婄瘒鏂囩珷闄勫綍銆? 杩欎釜閰嶇疆涓嶆秷澶氳浜嗭紝spring鎵弿娉ㄨВ鐢ㄧ殑銆? 鍒拌繖閲岄厤缃氨瀹屾垚浜嗭紝鏄笉鏄緢绠€鍗曘€? 绗簩绉嶏細浣跨敤娉ㄨВ褰㈠紡 涔熻鎴戜滑涓嶆兂姣忓啓涓€涓换鍔$被杩樿鍦▁ml鏂囦欢涓厤缃笅锛屾垜浠彲浠ヤ娇鐢ㄦ敞瑙Scheduled锛屾垜浠湅鐪嬫簮鏂囦欢涓娉ㄨВ鐨勫畾涔夛細
@Target({java.lang.annotation.ElementType.METHOD,java.lang.annotation.ElementType.ANNOTATION_TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented public@interfaceScheduled { publicabstractStringcron();
publicabstractlongfixedDelay();
publicabstractlongfixedRate(); }鍙互鐪嬪嚭璇ユ敞瑙f湁涓変釜鏂规硶鎴栬€呭彨鍙傛暟锛屽垎鍒〃绀虹殑鎰忔€濇槸锛? cron锛氭寚瀹歝ron琛ㄨ揪寮? fixedDelay锛氬畼鏂规枃妗hВ閲婏細Aninterval-basedtriggerwheretheintervalismeasuredfromthecompletiontimeoftheprevioustask.Thetimeunitvalueismeasuredinmilliseconds. 鍗宠〃绀轰粠涓婁竴涓换鍔″畬鎴愬紑濮嬪埌涓嬩竴涓换鍔″紑濮嬬殑闂撮殧锛屽崟浣嶆槸姣銆? fixedRate锛氬畼鏂规枃妗hВ閲婏細Aninterval-basedtriggerwheretheintervalismeasuredfromthestarttimeoftheprevioustask.Thetimeunitvalueismeasuredinmilliseconds. 鍗充粠涓婁竴涓换鍔″紑濮嬪埌涓嬩竴涓换鍔″紑濮嬬殑闂撮殧锛屽崟浣嶆槸姣銆?
涓嬮潰鎴戞潵閰嶇疆涓€涓嬨€? 绗竴姝ワ細缂栧啓pojo
importorg.springframework.scheduling.annotation.Scheduled; importorg.springframework.stereotype.Component;
@Component(鈥渢askJob鈥? publicclassTaskJob{ @Scheduled(cron="003?") publicvoidjob1(){ System.out.println(鈥滀换鍔¤繘琛屼腑銆傘€傘€傗€?; } }绗簩姝ワ細娣诲姞task鐩稿叧鐨勯厤缃細
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocation=" http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd http://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/taskhttp://www.springframework.org/schema/task/spring-task-3.0.xsd" default-lazy-init="false">
璇存槑锛氱悊璁轰笂鍙渶瑕佸姞涓?task:annotation-driven/>杩欏彞閰嶇疆灏卞彲浠ヤ簡锛岃繖浜涘弬鏁伴兘涓嶆槸蹇呴』鐨勩€?
Ok閰嶇疆瀹屾瘯锛屽綋鐒秙pringtask杩樻湁寰堝鍙傛暟锛屾垜灏变笉涓€涓€瑙i噴浜嗭紝鍏蜂綋鍙傝€儀sd鏂囨。http://www.springframework.org/schema/task/spring-task-3.0.xsd銆? 闄勫綍锛? cronExpression鐨勯厤缃鏄庯紝鍏蜂綋浣跨敤浠ュ強鍙傛暟璇风櫨搴oogle
瀛楁鍏佽鍊?鍏佽鐨勭壒娈婂瓧绗? 绉?0-59,-/
鍒?0-59,-/
灏忔椂0-23,-/
鏃ユ湡1-31,-?/LWC
鏈堜唤1-12鎴栬€?JAN-DEC,-/
鏄熸湡1-7鎴栬€?SUN-SAT,-?/LC#
骞达紙鍙€夛級鐣欑┖,1970-2099,-/
-鍖洪棿
閫氶厤绗?
?浣犱笉鎯宠缃偅涓瓧娈? 涓嬮潰鍙緥鍑哄嚑涓紡瀛?
CRON琛ㄨ揪寮?鍚箟
"0012?"姣忓ぉ涓崍鍗佷簩鐐硅Е鍙?
"01510?"姣忓ぉ鏃╀笂10锛?5瑙﹀彂
"01510?"姣忓ぉ鏃╀笂10锛?5瑙﹀彂
"01510?"姣忓ぉ鏃╀笂10锛?5瑙﹀彂
"01510?2005"2005骞寸殑姣忓ぉ鏃╀笂10锛?5瑙﹀彂
"014?"姣忓ぉ浠庝笅鍗?鐐瑰紑濮嬪埌2鐐?9鍒嗘瘡鍒嗛挓涓€娆¤Е鍙?
"00/514?"姣忓ぉ浠庝笅鍗?鐐瑰紑濮嬪埌2锛?5鍒嗙粨鏉熸瘡5鍒嗛挓涓€娆¤Е鍙?
"00/514,18?"姣忓ぉ鐨勪笅鍗?鐐硅嚦2锛?5鍜?鐐硅嚦6鐐?5鍒嗕袱涓椂闂存鍐呮瘡5鍒嗛挓涓€娆¤Е鍙?
"00-514?"姣忓ぉ14:00鑷?4:05姣忓垎閽熶竴娆¤Е鍙?
"010,4414?3WED"涓夋湀鐨勬瘡鍛ㄤ笁鐨?4锛?0鍜?4锛?4瑙﹀彂
"01510?MON-FRI"姣忎釜鍛ㄤ竴銆佸懆浜屻€佸懆涓夈€佸懆鍥涖€佸懆浜旂殑10锛?5瑙﹀彂
1銆丩istener鐨勫畾涔変笌浣滅敤
銆€銆€鐩戝惉鍣↙istener灏辨槸鍦╝pplication,session,request涓変釜瀵硅薄鍒涘缓銆侀攢姣佹垨鑰呭線鍏朵腑娣诲姞淇敼鍒犻櫎灞炴€ф椂鑷姩鎵ц浠g爜鐨勫姛鑳界粍浠躲€? 銆€銆€Listener鏄疭ervlet鐨勭洃鍚櫒锛屽彲浠ョ洃鍚鎴风鐨勮姹傦紝鏈嶅姟绔殑鎿嶄綔绛夈€? 2銆丩istener鐨勫垎绫讳笌浣跨敤
銆€銆€涓昏鏈変互涓嬩笁绫伙細
銆€銆€1銆丼ervletContext鐩戝惉
銆€銆€ServletContextListener锛氱敤浜庡Servlet鏁翠釜涓婁笅鏂囪繘琛岀洃鍚紙鍒涘缓銆侀攢姣侊級銆? publicvoidcontextInitialized(ServletContextEventsce);//涓婁笅鏂囧垵濮嬪寲 publicvoidcontextDestroyed(ServletContextEventsce);//涓婁笅鏂囬攢姣? publicServletContextgetServletContext();//ServletContextEvent浜嬩欢锛氬彇寰椾竴涓猄ervletContext锛坅pplication锛夊璞°€€銆€ServletContextAttributeListener锛氬Servlet涓婁笅鏂囧睘鎬х殑鐩戝惉锛堝鍒犳敼灞炴€э級銆?
publicvoidattributeAdded(ServletContextAttributeEventscab);//澧炲姞灞炴€?publicvoidattributeRemoved(ServletContextAttributeEventscab);//灞炴€у垹闄?publicvoidattributeRepalced(ServletContextAttributeEventscab);//灞炴€ф浛鎹紙绗簩娆¤缃悓涓€灞炴€э級
//ServletContextAttributeEvent浜嬩欢锛氳兘鍙栧緱璁剧疆灞炴€х殑鍚嶇О涓庡唴瀹?publicStringgetName();//寰楀埌灞炴€у悕绉?publicObjectgetValue();//鍙栧緱灞炴€х殑鍊笺€€銆€2銆丼ession鐩戝惉
銆€銆€Session灞炰簬http鍗忚涓嬬殑鍐呭锛屾帴鍙d綅浜巎avax.servlet.http.鍖呬笅銆? 銆€銆€HttpSessionListener鎺ュ彛锛氬Session鐨勬暣浣撶姸鎬佺殑鐩戝惉銆? publicvoidsessionCreated(HttpSessionEventse);//session鍒涘缓 publicvoidsessionDestroyed(HttpSessionEventse);//session閿€姣? //HttpSessionEvent浜嬩欢锛?publicHttpSessiongetSession();//鍙栧緱褰撳墠鎿嶄綔鐨剆ession銆€銆€HttpSessionAttributeListener鎺ュ彛锛氬session鐨勫睘鎬х洃鍚€?
publicvoidattributeAdded(HttpSessionBindingEventse);//澧炲姞灞炴€?publicvoidattributeRemoved(HttpSessionBindingEventse);//鍒犻櫎灞炴€?publicvoidattributeReplaced(HttpSessionBindingEventse);//鏇挎崲灞炴€? //HttpSessionBindingEvent浜嬩欢锛?publicStringgetName();//鍙栧緱灞炴€х殑鍚嶇О publicObjectgetValue();//鍙栧緱灞炴€х殑鍊?publicHttpSessiongetSession();//鍙栧緱褰撳墠鐨剆ession銆€銆€session鐨勯攢姣佹湁涓ょ鎯呭喌锛? 銆€銆€1銆乻ession瓒呮椂锛寃eb.xml閰嶇疆锛?
120
org.springframework.web.context.ContextLoaderListener 銆€銆€3銆丼pring浣跨敤Log4jConfigListener閰嶇疆Log4j鏃ュ織
銆€銆€Spring浣跨敤Log4jConfigListener鐨勫ソ澶勶細
1.鍔ㄦ€佺殑鏀瑰彉璁板綍绾у埆鍜岀瓥鐣ワ紝涓嶉渶瑕侀噸鍚疻eb搴旂敤銆?2.鎶妉og鏂囦欢瀹氬湪/WEB-INF/logs/鑰屼笉闇€瑕佸啓缁濆璺緞銆傚洜涓虹郴缁熸妸web鐩綍鐨勮矾寰勫帇鍏ヤ竴涓彨webapp.root鐨勭郴缁熷彉閲忋€傝繖鏍峰啓log鏂囦欢璺緞鏃朵笉鐢ㄥ啓缁濆璺緞浜嗐€?3.鍙互鎶妉og4j.properties鍜屽叾浠杙roperties涓€璧锋斁鍦?WEB-INF/锛岃€屼笉鏄疌lass-Path銆?4.璁剧疆log4jRefreshInterval鏃堕棿锛屽紑涓€鏉atchdog绾跨▼姣忛殧娈垫椂闂存壂鎻忎竴涓嬮厤缃枃浠剁殑鍙樺寲銆?
webAppRootKey project.root
log4jConfigLocation classpath:log4j.properties
log4jRefreshInterval 60000
org.springframework.web.util.Log4jConfigListener 銆€銆€4銆丼pring浣跨敤IntrospectorCleanupListener娓呯悊缂撳瓨
銆€銆€杩欎釜鐩戝惉鍣ㄧ殑浣滅敤鏄湪web搴旂敤鍏抽棴鏃跺埛鏂癑DK鐨凧avaBeans鐨処ntrospector缂撳瓨锛屼互纭繚Web搴旂敤绋嬪簭鐨勭被鍔犺浇鍣ㄤ互鍙婂叾鍔犺浇鐨勭被姝g‘鐨勯噴鏀捐祫婧愩€? 銆€銆€濡傛灉JavaBeans鐨処ntrospector宸茶鐢ㄦ潵鍒嗘瀽搴旂敤绋嬪簭绫伙紝绯荤粺绾х殑Introspector缂撳瓨灏嗘寔鏈夎繖浜涚被鐨勪竴涓‖寮曠敤銆傚洜姝わ紝杩欎簺绫诲拰Web搴旂敤绋嬪簭鐨勭被鍔犺浇鍣ㄥ湪Web搴旂敤绋嬪簭鍏抽棴鏃跺皢涓嶄細琚瀮鍦炬敹闆嗗櫒鍥炴敹锛佽€孖ntrospectorCleanupListener鍒欎細瀵瑰叾杩涜閫傚綋鐨勬竻鐞嗭紝宸蹭娇鍏惰兘澶熻鍨冨溇鏀堕泦鍣ㄥ洖鏀躲€? 銆€銆€鍞竴鑳藉娓呯悊Introspector鐨勬柟娉曟槸鍒锋柊鏁翠釜Introspector缂撳瓨锛屾病鏈夊叾浠栧姙娉曟潵纭垏鎸囧畾搴旂敤绋嬪簭鎵€寮曠敤鐨勭被銆傝繖灏嗗垹闄ゆ墍鏈夊叾浠栧簲鐢ㄧ▼搴忓湪鏈嶅姟鍣ㄧ殑缂撳瓨鐨処ntrospector缁撴灉銆? 銆€銆€鍦ㄤ娇鐢⊿pring鍐呴儴鐨刡ean鏈哄埗鏃讹紝涓嶉渶瑕佷娇鐢ㄦ鐩戝惉鍣紝鍥犱负Spring鑷繁鐨刬ntrospectionresultscache灏嗕細绔嬪嵆鍒锋柊琚垎鏋愯繃鐨凧avaBeansIntrospectorcache锛岃€屼粎浠呬細鍦ㄥ簲鐢ㄧ▼搴忚嚜宸辩殑ClassLoader閲岄潰鎸佹湁涓€涓猚ache銆傝櫧鐒禨pring鏈韩涓嶄骇鐢熸硠婕忥紝娉ㄦ剰锛屽嵆浣垮湪Spring妗嗘灦鐨勭被鏈韩椹荤暀鍦ㄤ竴涓€滃叡鍚屸€濈被鍔犺浇鍣紙濡傜郴缁熺殑ClassLoader锛夌殑鎯呭喌涓嬶紝涔熶粛鐒跺簲璇ヤ娇鐢ㄤ娇鐢↖ntrospectorCleanupListener銆傚湪杩欑鎯呭喌涓嬶紝杩欎釜IntrospectorCleanupListener灏嗕細濡ュ杽娓呯悊Spring鐨刬ntrospectioncache銆? 銆€銆€搴旂敤绋嬪簭绫伙紝鍑犱箮涓嶉渶瑕佺洿鎺ヤ娇鐢↗avaBeansIntrospector锛屾墍浠ワ紝閫氬父閮戒笉鏄疘ntrospectorresource閫犳垚鍐呭瓨娉勯湶銆傜浉鍙嶏紝璁稿搴撳拰妗嗘灦锛屼笉娓呯悊Introspector锛屼緥濡傦細Struts鍜孮uartz銆? 銆€銆€闇€瑕佹敞鎰忕殑鏄竴涓畝鍗旾ntrospector娉勬紡灏嗕細瀵艰嚧鏁翠釜Web搴旂敤绋嬪簭鐨勭被鍔犺浇鍣ㄤ笉浼氳鍥炴敹锛佽繖鏍峰仛鐨勭粨鏋滐紝灏嗕細鏄湪web搴旂敤绋嬪簭鍏抽棴鏃讹紝璇ュ簲鐢ㄧ▼搴忔墍鏈夌殑闈欐€佺被璧勬簮锛堟瘮濡傦細鍗曞疄渚嬪璞★級閮芥病鏈夊緱鍒伴噴鏀俱€傝€屽鑷村唴瀛樻硠闇茬殑鏍规湰鍘熷洜鍏跺疄骞朵笉鏄繖浜涙湭琚洖鏀剁殑绫伙紒
銆€銆€娉ㄦ剰锛欼ntrospectorCleanupListener搴旇娉ㄥ唽涓簑eb.xml涓殑绗竴涓狶istener锛屽湪浠讳綍鍏朵粬Listener涔嬪墠娉ㄥ唽锛屾瘮濡傚湪Spring''sContextLoaderListener娉ㄥ唽涔嬪墠锛屾墠鑳界‘淇滻ntrospectorCleanupListener鍦╓eb搴旂敤鐨勭敓鍛藉懆鏈熼€傚綋鏃舵満鐢熸晥銆?
org.springframework.web.util.IntrospectorCleanupListener
|
|