{"id":32,"date":"2018-03-09T14:49:18","date_gmt":"2018-03-09T06:49:18","guid":{"rendered":"http:\/\/chenhaitao.me\/?p=32"},"modified":"2018-03-09T14:51:36","modified_gmt":"2018-03-09T06:51:36","slug":"spring-%e7%9a%84scheduled%e6%b3%a8%e8%a7%a3%e5%ae%9e%e7%8e%b0%e5%ae%9a%e6%97%b6%e4%bb%bb%e5%8a%a1%e6%89%a7%e8%a1%8c%e5%92%8c%e8%b0%83%e5%ba%a6","status":"publish","type":"post","link":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/2018\/03\/09\/spring-%e7%9a%84scheduled%e6%b3%a8%e8%a7%a3%e5%ae%9e%e7%8e%b0%e5%ae%9a%e6%97%b6%e4%bb%bb%e5%8a%a1%e6%89%a7%e8%a1%8c%e5%92%8c%e8%b0%83%e5%ba%a6\/","title":{"rendered":"Spring \u7684@Scheduled\u6ce8\u89e3\u5b9e\u73b0\u5b9a\u65f6\u4efb\u52a1\u6267\u884c\u548c\u8c03\u5ea6"},"content":{"rendered":"<p>Spring \u7684@Scheduled\u6ce8\u89e3\u5b9e\u73b0\u5b9a\u65f6\u4efb\u52a1\u6267\u884c\u548c\u8c03\u5ea6<\/p>\n<p>\u9996\u5148\u8981\u914d\u7f6e\u6211\u4eec\u7684spring.xml \u00a0 &#8212; \u00a0\u5373spring\u7684\u4e3b\u914d\u7f6e\u6587\u4ef6(\u6709\u7684\u9879\u76ee\u4e2d\u53eb\u505aapplicationContext.xml\u6216context.xml)<\/p>\n<p>xmlns \u591a\u52a0\u4e0b\u9762\u7684\u5185\u5bb9\u3001<\/p>\n<ol>\n<li>xmlns:task=&#8221;http:\/\/www.springframework.org\/schema\/task&#8221;<\/li>\n<\/ol>\n<p>\u7136\u540exsi:schemaLocation\u591a\u52a0\u4e0b\u9762\u7684\u5185\u5bb9\u3001<\/p>\n<ol>\n<li>http:\/\/www.springframework.org\/schema\/task<\/li>\n<li>http:\/\/www.springframework.org\/schema\/task\/spring-task-3.1.xsd<\/li>\n<\/ol>\n<p>\u6700\u540e\u662f\u6211\u4eec\u7684task\u4efb\u52a1\u626b\u63cf\u6ce8\u89e3<\/p>\n<ol>\n<li>&lt;task:annotation-driven\/&gt;<\/li>\n<\/ol>\n<p>\u6211\u7684\u914d\u7f6e\u626b\u63cf\u4f4d\u7f6e\u662f\uff1a<\/p>\n<ol>\n<li>&lt;context:annotation-config\/&gt;<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0&lt;bean\u00a0class=&#8221;org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor&#8221;\/&gt;<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0&lt;context:component-scan\u00a0base-package=&#8221;com.test&#8221;\/&gt;<\/li>\n<\/ol>\n<p>\u626b\u63cf\u7684\u662fcom.test\u8fd9\u6837\u7684\u5305\u4e0b\u7684\u5185\u5bb9\u3001<\/p>\n<p>\u4e0b\u9762\u9700\u8981\u63a5\u53e3\u548c\u5b9e\u73b0\uff08\u6211\u7684\u8fd9\u51e0\u4e2ajava\u6587\u4ef6\u90fd\u662fcom.test\u7684\u5305\u4e0b\u7684\u3001\uff09<\/p>\n<ol>\n<li>public\u00a0interface\u00a0IMyTestService\u00a0{<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0myTest();<\/li>\n<li>}<\/li>\n<li>@Component\u00a0\u00a0\/\/import\u00a0org.springframework.stereotype.Component;<\/li>\n<li>public\u00a0class\u00a0MyTestServiceImpl\u00a0\u00a0implements\u00a0IMyTestService\u00a0{<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0@Scheduled(cron=&#8221;0\/5\u00a0*\u00a0*\u00a0\u00a0*\u00a0*\u00a0?\u00a0&#8220;)\u00a0\u00a0\u00a0\/\/\u6bcf5\u79d2\u6267\u884c\u4e00\u6b21<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0@Override<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0myTest(){<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0System.out.println(&#8220;\u8fdb\u5165\u6d4b\u8bd5&#8221;);<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/li>\n<li>}<\/li>\n<\/ol>\n<p>\u6267\u884c\u540e\u63a7\u5236\u53f0\u5c31\u4f1a\u6253\u5370\u51fa \u00a0 \u8fdb\u5165\u6d4b\u8bd5 \u00a0 \u4e86<\/p>\n<p>\u9700\u8981\u6ce8\u610f\u7684\u51e0\u70b9\uff1a<\/p>\n<p>1\u3001spring\u7684@Scheduled\u6ce8\u89e3 \u00a0\u9700\u8981\u5199\u5728\u5b9e\u73b0\u4e0a\u3001<\/p>\n<p>2\u3001 \u5b9a\u65f6\u5668\u7684\u4efb\u52a1\u65b9\u6cd5\u4e0d\u80fd\u6709\u8fd4\u56de\u503c\uff08\u5982\u679c\u6709\u8fd4\u56de\u503c\uff0cspring\u521d\u59cb\u5316\u7684\u65f6\u5019\u4f1a\u544a\u8bc9\u4f60\u6709\u4e2a\u9519\u8bef\u3001\u9700\u8981\u8bbe\u5b9a\u4e00\u4e2aproxytargetclass\u7684\u67d0\u4e2a\u503c\u4e3atrue\u3001\u5177\u4f53\u5c31\u53bb\u767e\u5ea6google\u5427\uff09<\/p>\n<p>3\u3001\u5b9e\u73b0\u7c7b\u4e0a\u8981\u6709\u7ec4\u4ef6\u7684\u6ce8\u89e3@Component<\/p>\n<p>\u5269\u4e0b\u7684\u5c31\u662fcorn\u8868\u8fbe\u5f0f\u4e86\u3001\u5177\u4f53\u4f7f\u7528\u4ee5\u53ca\u53c2\u6570\u8bf7\u767e\u5ea6google\u3001<\/p>\n<p>\u4e0b\u9762\u53ea\u4f8b\u51fa\u51e0\u4e2a\u5f0f\u5b50<\/p>\n<p>CRON\u8868\u8fbe\u5f0f \u00a0 \u00a0\u542b\u4e49<br \/>\n&#8220;0 0 12 * * ?&#8221; \u00a0 \u00a0\u6bcf\u5929\u4e2d\u5348\u5341\u4e8c\u70b9\u89e6\u53d1<br \/>\n&#8220;0 15 10 ? * *&#8221; \u00a0 \u00a0\u6bcf\u5929\u65e9\u4e0a10\uff1a15\u89e6\u53d1<br \/>\n&#8220;0 15 10 * * ?&#8221; \u00a0 \u00a0\u6bcf\u5929\u65e9\u4e0a10\uff1a15\u89e6\u53d1<br \/>\n&#8220;0 15 10 * * ? *&#8221; \u00a0 \u00a0\u6bcf\u5929\u65e9\u4e0a10\uff1a15\u89e6\u53d1<br \/>\n&#8220;0 15 10 * * ? 2005&#8221; \u00a0 \u00a02005\u5e74\u7684\u6bcf\u5929\u65e9\u4e0a10\uff1a15\u89e6\u53d1<br \/>\n&#8220;0 * 14 * * ?&#8221; \u00a0 \u00a0\u6bcf\u5929\u4ece\u4e0b\u53482\u70b9\u5f00\u59cb\u52302\u70b959\u5206\u6bcf\u5206\u949f\u4e00\u6b21\u89e6\u53d1<br \/>\n&#8220;0 0\/5 14 * * ?&#8221; \u00a0 \u00a0\u6bcf\u5929\u4ece\u4e0b\u53482\u70b9\u5f00\u59cb\u52302\uff1a55\u5206\u7ed3\u675f\u6bcf5\u5206\u949f\u4e00\u6b21\u89e6\u53d1<br \/>\n&#8220;0 0\/5 14,18 * * ?&#8221; \u00a0 \u00a0\u6bcf\u5929\u7684\u4e0b\u53482\u70b9\u81f32\uff1a55\u548c6\u70b9\u81f36\u70b955\u5206\u4e24\u4e2a\u65f6\u95f4\u6bb5\u5185\u6bcf5\u5206\u949f\u4e00\u6b21\u89e6\u53d1<br \/>\n&#8220;0 0-5 14 * * ?&#8221; \u00a0 \u00a0\u6bcf\u592914:00\u81f314:05\u6bcf\u5206\u949f\u4e00\u6b21\u89e6\u53d1<br \/>\n&#8220;0 10,44 14 ? 3 WED&#8221; \u00a0 \u00a0\u4e09\u6708\u7684\u6bcf\u5468\u4e09\u768414\uff1a10\u548c14\uff1a44\u89e6\u53d1<br \/>\n&#8220;0 15 10 ? * MON-FRI&#8221; \u00a0 \u00a0\u6bcf\u4e2a\u5468\u4e00\u3001\u5468\u4e8c\u3001\u5468\u4e09\u3001\u5468\u56db\u3001\u5468\u4e94\u768410\uff1a15\u89e6\u53d1<\/p>\n<p>\u53c2\u6570\u5206\u6790\uff1a<br \/>\n\u201c*\u201d\u2014\u2014\u5b57\u7b26\u53ef\u4ee5\u7528\u4e8e\u6240\u6709\u5b57\u6bb5\uff0c\u5728\u201c\u5206\u201d\u5b57\u6bb5\u4e2d\u8bbe\u4e3a&#8221;*&#8221;\u8868\u793a&#8221;\u6bcf\u4e00\u5206\u949f&#8221;\u7684\u542b\u4e49\u3002<br \/>\n\u201c?\u201d\u2014\u2014\u5b57\u7b26\u53ef\u4ee5\u7528\u5728\u201c\u65e5\u201d\u548c\u201c\u5468\u51e0\u201d\u5b57\u6bb5.\u5b83\u7528\u6765\u6307\u5b9a&#8217;\u4e0d\u660e\u786e\u7684\u503c&#8217;.\u8fd9\u5728\u4f60\u9700\u8981\u6307\u5b9a\u8fd9\u4e24\u4e2a\u5b57\u6bb5\u4e2d\u7684\u67d0\u4e00\u4e2a\u503c\u800c\u4e0d\u662f\u53e6\u5916\u4e00\u4e2a\u7684\u65f6\u5019\u4f1a\u88ab\u7528\u5230\u3002\u5728\u540e\u9762\u7684\u4f8b\u5b50\u4e2d\u53ef\u4ee5\u770b\u5230\u5176\u542b\u4e49\u3002<br \/>\n\u201c-\u201d\u2014\u2014\u5b57\u7b26\u88ab\u7528\u6765\u6307\u5b9a\u4e00\u4e2a\u503c\u7684\u8303\u56f4\uff0c\u6bd4\u5982\u5728\u201c\u5c0f\u65f6\u201d\u5b57\u6bb5\u4e2d\u8bbe\u4e3a&#8221;10-12&#8243;\u8868\u793a&#8221;10\u70b9\u523012\u70b9&#8221;\u3002<br \/>\n\u201c,\u201d\u2014\u2014\u5b57\u7b26\u6307\u5b9a\u6570\u4e2a\u503c\u3002\u6bd4\u5982\u5728\u201c\u5468\u51e0\u201d\u5b57\u6bb5\u4e2d\u8bbe\u4e3a&#8221;MON,WED,FRI&#8221;\u8868\u793a&#8221;the days Monday, Wednesday, and Friday&#8221;\u3002<br \/>\n\u201c\/\u201d\u2014\u2014\u5b57\u7b26\u7528\u6765\u6307\u5b9a\u4e00\u4e2a\u503c\u7684\u7684\u589e\u52a0\u5e45\u5ea6.\u6bd4\u5982\u5728\u201c\u79d2\u201d\u5b57\u6bb5\u4e2d\u8bbe\u7f6e\u4e3a&#8221;0\/15&#8243;\u8868\u793a&#8221;\u7b2c0, 15, 30,\u548c45\u79d2&#8221;\u3002\u800c&#8221;5\/15&#8243;\u5219\u8868\u793a&#8221;\u7b2c5, 20, 35,\u548c50&#8243;.\u5728&#8217;\/&#8217;\u524d\u52a0&#8221;*&#8221;\u5b57\u7b26\u76f8\u5f53\u4e8e\u6307\u5b9a\u4ece0\u79d2\u5f00\u59cb.\u6bcf\u4e2a\u5b57\u6bb5\u90fd\u6709\u4e00\u7cfb\u5217\u53ef\u4ee5\u5f00\u59cb\u6216\u7ed3\u675f\u7684\u6570\u503c\u3002\u5bf9\u4e8e\u201c\u79d2\u201d\u548c\u201c\u5206\u201d\u5b57\u6bb5\u6765\u8bf4\uff0c\u5176\u6570\u503c\u8303\u56f4\u4e3a0\u523059\uff0c\u5bf9\u4e8e\u201c\u5c0f\u65f6\u201d\u5b57\u6bb5\u6765\u8bf4\u5176\u4e3a0\u523023,\u5bf9\u4e8e\u201c\u65e5\u201d\u5b57\u6bb5\u6765\u8bf4\u4e3a0\u523031,\u800c\u5bf9\u4e8e\u201c\u6708\u201d\u5b57\u6bb5\u6765\u8bf4\u4e3a1\u523012\u3002&#8221;\/&#8221;\u5b57\u6bb5\u4ec5\u4ec5\u53ea\u662f\u5e2e\u52a9\u4f60\u5728\u5141\u8bb8\u7684\u6570\u503c\u8303\u56f4\u5185\u4ece\u5f00\u59cb&#8221;\u7b2cn&#8221;\u7684\u503c\u3002<br \/>\n\u201cL\u201d\u2014\u2014\u5b57\u7b26\u53ef\u7528\u5728\u201c\u65e5\u201d\u548c\u201c\u5468\u51e0\u201d\u8fd9\u4e24\u4e2a\u5b57\u6bb5\u3002\u5b83\u662f&#8221;last&#8221;\u7684\u7f29\u5199,\u4f46\u662f\u5728\u8fd9\u4e24\u4e2a\u5b57\u6bb5\u4e2d\u6709\u4e0d\u540c\u7684\u542b\u4e49\u3002\u4f8b\u5982,\u201c\u65e5\u201d\u5b57\u6bb5\u4e2d\u7684&#8221;L&#8221;\u8868\u793a&#8221;\u4e00\u4e2a\u6708\u4e2d\u7684\u6700\u540e\u4e00\u5929&#8221; \u2014\u2014\u5bf9\u4e8e\u4e00\u6708\u5c31\u662f31\u53f7\u5bf9\u4e8e\u4e8c\u6708\u6765\u8bf4\u5c31\u662f28\u53f7\uff08\u975e\u95f0\u5e74\uff09\u3002\u800c\u5728\u201c\u5468\u51e0\u201d\u5b57\u6bb5\u4e2d,\u5b83\u7b80\u5355\u7684\u8868\u793a&#8221;7&#8243; or &#8220;SAT&#8221;\uff0c\u4f46\u662f\u5982\u679c\u5728\u201c\u5468\u51e0\u201d\u5b57\u6bb5\u4e2d\u4f7f\u7528\u65f6\u8ddf\u5728\u67d0\u4e2a\u6570\u5b57\u4e4b\u540e,\u5b83\u8868\u793a&#8221;\u8be5\u6708\u6700\u540e\u4e00\u4e2a\u661f\u671f\u00d7&#8221; \u2014\u2014\u6bd4\u5982&#8221;6L&#8221;\u8868\u793a&#8221;\u8be5\u6708\u6700\u540e\u4e00\u4e2a\u5468\u4e94&#8221;\u3002\u5f53\u4f7f\u7528&#8217;L&#8217;\u9009\u9879\u65f6,\u6307\u5b9a\u786e\u5b9a\u7684\u5217\u8868\u6216\u8005\u8303\u56f4\u975e\u5e38\u91cd\u8981\uff0c\u5426\u5219\u4f60\u4f1a\u88ab\u7ed3\u679c\u641e\u7cca\u6d82\u7684\u3002<br \/>\n\u201cW\u201d\u2014\u2014\u53ef\u7528\u4e8e\u201c\u65e5\u201d\u5b57\u6bb5\u3002\u7528\u6765\u6307\u5b9a\u5386\u7ed9\u5b9a\u65e5\u671f\u6700\u8fd1\u7684\u5de5\u4f5c\u65e5(\u5468\u4e00\u5230\u5468\u4e94)\u3002\u6bd4\u5982\u4f60\u5c06\u201c\u65e5\u201d\u5b57\u6bb5\u8bbe\u4e3a&#8221;15W&#8221;\uff0c\u610f\u4e3a: &#8220;\u79bb\u8be5\u670815\u53f7\u6700\u8fd1\u7684\u5de5\u4f5c\u65e5&#8221;\u3002\u56e0\u6b64\u5982\u679c15\u53f7\u4e3a\u5468\u516d\uff0c\u89e6\u53d1\u5668\u4f1a\u572814\u53f7\u5373\u5468\u4e94\u8c03\u7528\u3002\u5982\u679c15\u53f7\u4e3a\u5468\u65e5,\u89e6\u53d1\u5668\u4f1a\u572816\u53f7\u4e5f\u5c31\u662f\u5468\u4e00\u89e6\u53d1\u3002\u5982\u679c15\u53f7\u4e3a\u5468\u4e8c,\u90a3\u4e48\u5f53\u5929\u5c31\u4f1a\u89e6\u53d1\u3002\u7136\u800c\u5982\u679c\u4f60\u5c06\u201c\u65e5\u201d\u5b57\u6bb5\u8bbe\u4e3a&#8221;1W&#8221;,\u800c\u4e00\u53f7\u53c8\u662f\u5468\u516d,\u89e6\u53d1\u5668\u4f1a\u4e8e\u4e0b\u5468\u4e00\u4e5f\u5c31\u662f\u5f53\u6708\u76843\u53f7\u89e6\u53d1,\u56e0\u4e3a\u5b83\u4e0d\u4f1a\u8d8a\u8fc7\u5f53\u6708\u7684\u503c\u7684\u8303\u56f4\u8fb9\u754c\u3002&#8217;W&#8217;\u5b57\u7b26\u53ea\u80fd\u7528\u4e8e\u201c\u65e5\u201d\u5b57\u6bb5\u7684\u503c\u4e3a\u5355\u72ec\u7684\u4e00\u5929\u800c\u4e0d\u662f\u4e00\u7cfb\u5217\u503c\u7684\u65f6\u5019\u3002<br \/>\n\u201cL\u201d\u548c\u201cW\u201d\u53ef\u4ee5\u7ec4\u5408\u7528\u4e8e\u201c\u65e5\u201d\u5b57\u6bb5\u8868\u793a\u4e3a&#8217;LW&#8217;\uff0c\u610f\u4e3a&#8221;\u8be5\u6708\u6700\u540e\u4e00\u4e2a\u5de5\u4f5c\u65e5&#8221;\u3002<br \/>\n\u201c#\u201d\u2014\u2014\u5b57\u7b26\u53ef\u7528\u4e8e\u201c\u5468\u51e0\u201d\u5b57\u6bb5\u3002\u8be5\u5b57\u7b26\u8868\u793a\u201c\u8be5\u6708\u7b2c\u51e0\u4e2a\u5468\u00d7\u201d\uff0c\u6bd4\u5982&#8221;6#3&#8243;\u8868\u793a\u8be5\u6708\u7b2c\u4e09\u4e2a\u5468\u4e94( 6\u8868\u793a\u5468\u4e94\u800c&#8221;#3&#8243;\u8be5\u6708\u7b2c\u4e09\u4e2a)\u3002\u518d\u6bd4\u5982: &#8220;2#1&#8243; =\u8868\u793a\u8be5\u6708\u7b2c\u4e00\u4e2a\u5468\u4e00\u800c&#8221;4#5&#8221; =\u8be5\u6708\u7b2c\u4e94\u4e2a\u5468\u4e09\u3002\u6ce8\u610f\u5982\u679c\u4f60\u6307\u5b9a&#8221;#5&#8243;\u8be5\u6708\u6ca1\u6709\u7b2c\u4e94\u4e2a\u201c\u5468\u00d7\u201d\uff0c\u8be5\u6708\u662f\u4e0d\u4f1a\u89e6\u53d1\u7684\u3002<br \/>\n\u201cC\u201d\u2014\u2014\u5b57\u7b26\u53ef\u7528\u4e8e\u201c\u65e5\u201d\u548c\u201c\u5468\u51e0\u201d\u5b57\u6bb5\uff0c\u5b83\u662f&#8221;calendar&#8221;\u7684\u7f29\u5199\u3002\u5b83\u8868\u793a\u4e3a\u57fa\u4e8e\u76f8\u5173\u7684\u65e5\u5386\u6240\u8ba1\u7b97\u51fa\u7684\u503c\uff08\u5982\u679c\u6709\u7684\u8bdd\uff09\u3002\u5982\u679c\u6ca1\u6709\u5173\u8054\u7684\u65e5\u5386,\u90a3\u5b83\u7b49\u540c\u4e8e\u5305\u542b\u5168\u90e8\u65e5\u5386\u3002\u201c\u65e5\u201d\u5b57\u6bb5\u503c\u4e3a&#8221;5C&#8221;\u8868\u793a&#8221;\u65e5\u5386\u4e2d\u7684\u7b2c\u4e00\u5929\u6216\u80055\u53f7\u4ee5\u540e&#8221;\uff0c\u201c\u5468\u51e0\u201d\u5b57\u6bb5\u503c\u4e3a&#8221;1C&#8221;\u5219\u8868\u793a&#8221;\u65e5\u5386\u4e2d\u7684\u7b2c\u4e00\u5929\u6216\u8005\u5468\u65e5\u4ee5\u540e&#8221;\u3002<br \/>\n\u5bf9\u4e8e\u201c\u6708\u4efd\u201d\u5b57\u6bb5\u548c\u201c\u5468\u51e0\u201d\u5b57\u6bb5\u6765\u8bf4\u5408\u6cd5\u7684\u5b57\u7b26\u90fd\u4e0d\u662f\u5927\u5c0f\u5199\u654f\u611f\u7684\u3002<\/p>\n<p>\u5b9e\u4f8b\u5c55\u793a<\/p>\n<p>Spring\u4e3b\u914d\u7f6e\u6587\u4ef6\uff1acontext-globle.xml<\/p>\n<p>xmlns \u591a\u52a0\u4e0b\u9762\u7684\u5185\u5bb9\u3001<\/p>\n<ol>\n<li>xmlns:task=&#8221;http:\/\/www.springframework.org\/schema\/task&#8221;<\/li>\n<\/ol>\n<p>\u7136\u540exsi:schemaLocation\u591a\u52a0\u4e0b\u9762\u7684\u5185\u5bb9\u3001<\/p>\n<ol>\n<li>http:\/\/www.springframework.org\/schema\/task<\/li>\n<li>http:\/\/www.springframework.org\/schema\/task\/spring-task-3.1.xsd<\/li>\n<\/ol>\n<p>\u6700\u540e\u662f\u6211\u4eec\u7684task\u4efb\u52a1\u626b\u63cf\u6ce8\u89e3<\/p>\n<ol>\n<li>&lt;task:annotation-driven\/&gt;<\/li>\n<\/ol>\n<p>\u5b9a\u65f6\u4efb\u52a1\u7c7b\uff1a TimoutUrlJob \u00a0&#8212;- \u5b9a\u65f6\u5411\u6307\u5b9aurl\u53d1\u9001Http \u00a0Get\u8bf7\u6c42<\/p>\n<pre class=\"hljs java\"><span class=\"hljs-meta\">@Component<\/span>\r\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">TimoutUrlJob<\/span> <\/span>{\r\n<span class=\"hljs-meta\">@Autowired<\/span>\r\n<span class=\"hljs-keyword\">private<\/span> CaptchaTimeoutUrlService captchaTimeoutUrlService;\r\n\r\n<span class=\"hljs-meta\">@Scheduled<\/span>(cron=<span class=\"hljs-string\">\"0\/5 * *  * * ? \"<\/span>)   <span class=\"hljs-comment\">\/\/\u6bcf5\u79d2\u6267\u884c\u4e00\u6b21  <\/span>\r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">test<\/span><span class=\"hljs-params\">()<\/span><\/span>{\r\nSystem.out.println(<span class=\"hljs-string\">\"aaaa\"<\/span>);\r\nList&lt;CaptchaTimeoutUrl&gt; list = captchaTimeoutUrlService.getTimeoutUrl();\r\n\r\nSystem.out.println(list);\r\n<span class=\"hljs-keyword\">for<\/span>(CaptchaTimeoutUrl captchaTimeoutUrl:list){\r\n<span class=\"hljs-keyword\">try<\/span> {\r\n<span class=\"hljs-comment\">\/\/\u4f7f\u7528Java\u4ee3\u7801\u8bf7\u6c42\u53cd\u9988\u8def\u5f84\uff0c\u5e76\u8fd4\u56dereqId\u548cresult\u7ed3\u679c<\/span>\r\nString backInfo = HttpRequestUtils.httpRequestGet(captchaTimeoutUrl.getUrl());\r\n<span class=\"hljs-keyword\">if<\/span>(<span class=\"hljs-keyword\">null<\/span>==backInfo||backInfo==<span class=\"hljs-string\">\"\"<\/span>){\r\nHttpRequestUtils.httpRequestGet(captchaTimeoutUrl.getUrl());\r\ncaptchaTimeoutUrlService.updateTimeputUrl(captchaTimeoutUrl);\r\n}\r\n} <span class=\"hljs-keyword\">catch<\/span> (Exception e) {\r\ne.printStackTrace();\r\n}\r\n}\r\n}\r\n}<\/pre>\n<p>\u53d1\u9001Get\u8bf7\u6c42\u7684\u5de5\u5177\u7c7b \uff1a<\/p>\n<pre class=\"hljs cs\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">HttpRequestUtils<\/span> {\r\n<span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">static<\/span> final String POST_URL=<span class=\"hljs-string\">\"http:\/\/localhost:8088\/services\/xxx\/xxx\/get.htm\"<\/span>;\r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">main<\/span>(<span class=\"hljs-params\">String[] args<\/span>) <\/span>{\r\n<span class=\"hljs-keyword\">try<\/span> {\r\nhttpRequestGet(POST_URL);\r\n} <span class=\"hljs-keyword\">catch<\/span> (Exception e) {\r\ne.printStackTrace();\r\n}\r\n}\r\n<span class=\"hljs-comment\">\/** \r\n     * http get \u8bf7\u6c42 \r\n     * @param urlStr \u8bf7\u6c42URL\u5730\u5740 \r\n     * @throws Exception \r\n     *\/<\/span>  \r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span>  String <span class=\"hljs-title\">httpRequestGet<\/span>(<span class=\"hljs-params\">String urlStr<\/span>) throws Exception<\/span>{  \r\n       <span class=\"hljs-comment\">\/\/URL\u62fc\u63a5,\u5982\uff1a\"http:\/\/www.baidu.com?name=HI,\u4e2d\u56fd\",\u8fd9\u91cc\u5bf9\u7279\u6b8a\u5b57\u7b26\u8fdb\u884c\u4e86\u7f16\u7801\uff0c\u4e0d\u7136\u4f1a\u4ea7\u751f\u4e71\u7801  <\/span>\r\n       URL url = <span class=\"hljs-keyword\">new<\/span> URL(urlStr);  \r\n       System.<span class=\"hljs-keyword\">out<\/span>.println(<span class=\"hljs-string\">\"++++++++++++++++++++++++++++++++++++++++++++++++\"<\/span>);\r\n       System.<span class=\"hljs-keyword\">out<\/span>.println(<span class=\"hljs-string\">\"\u8fdb\u5165\u56de\u8c03\u65b9\u6cd5\uff01\"<\/span>);\r\nSystem.<span class=\"hljs-keyword\">out<\/span>.println(urlStr);\r\nSystem.<span class=\"hljs-keyword\">out<\/span>.println(<span class=\"hljs-string\">\"++++++++++++++++++++++++++++++++++++++++++++++++\"<\/span>);\r\n       <span class=\"hljs-comment\">\/\/openConnection\u51fd\u6570\u4f1a\u6839\u636eURL\u7684\u534f\u8bae\u8fd4\u56de\u4e0d\u540c\u7684URLConnection\u5b50\u7c7b\u7684\u5bf9\u8c61  <\/span>\r\n       <span class=\"hljs-comment\">\/\/\u8fd9\u91ccURL\u662f\u4e00\u4e2ahttp,\u56e0\u6b64\u5b9e\u9645\u8fd4\u56de\u7684\u662fHttpURLConnection   <\/span>\r\n       HttpURLConnection httpConn = (HttpURLConnection)url.openConnection();  \r\n         \r\n       <span class=\"hljs-comment\">\/\/\u8fdb\u884c\u8fde\u63a5,\u5b9e\u9645\u4e0arequest\u8981\u5728\u4e0b\u4e00\u53e5\u7684connection.getInputStream()\u51fd\u6570\u4e2d\u624d\u4f1a\u771f\u6b63\u53d1\u5230 \u670d\u52a1\u5668****\u5f85\u9a8c\u8bc1  <\/span>\r\n       httpConn.connect();  \r\n         \r\n        <span class=\"hljs-comment\">\/\/ \u53d6\u5f97\u8f93\u5165\u6d41\uff0c\u5e76\u4f7f\u7528Reader\u8bfb\u53d6  <\/span>\r\n       BufferedReader reader = <span class=\"hljs-keyword\">new<\/span> BufferedReader(<span class=\"hljs-keyword\">new<\/span> InputStreamReader(httpConn.getInputStream()));  \r\n         \r\n       System.<span class=\"hljs-keyword\">out<\/span>.println(<span class=\"hljs-string\">\"=========get request\u63a5\u6536\u6570\u636e\u5185\u5bb9\u5f00\u59cb============\"<\/span>);  \r\n       String lines;  \r\n       <span class=\"hljs-keyword\">while<\/span> ((lines = reader.readLine()) != <span class=\"hljs-keyword\">null<\/span>) {  \r\n           System.<span class=\"hljs-keyword\">out<\/span>.println(lines);  \r\n       }  \r\n       System.<span class=\"hljs-keyword\">out<\/span>.println(reader);\r\n       reader.close();  \r\n       System.<span class=\"hljs-keyword\">out<\/span>.println(<span class=\"hljs-string\">\"=========get request\u63a5\u6536\u6570\u636e\u5185\u5bb9\u7ed3\u675f============\"<\/span>);  \r\n       httpConn.disconnect();  \r\n       <span class=\"hljs-keyword\">return<\/span> lines;\r\n   }  \r\n}<\/pre>\n<p>\u9996\u5148\u8981\u914d\u7f6e\u6211\u4eec\u7684spring.xml \u00a0 &#8212; \u00a0\u5373spring\u7684\u4e3b\u914d\u7f6e\u6587\u4ef6(\u6709\u7684\u9879\u76ee\u4e2d\u53eb\u505aapplicationContext.xml\u6216context.xml)<\/p>\n<p>xmlns \u591a\u52a0\u4e0b\u9762\u7684\u5185\u5bb9\u3001<\/p>\n<ol>\n<li>xmlns:task=&#8221;http:\/\/www.springframework.org\/schema\/task&#8221;<\/li>\n<\/ol>\n<p>\u7136\u540exsi:schemaLocation\u591a\u52a0\u4e0b\u9762\u7684\u5185\u5bb9\u3001<\/p>\n<ol>\n<li>http:\/\/www.springframework.org\/schema\/task<\/li>\n<li>http:\/\/www.springframework.org\/schema\/task\/spring-task-3.1.xsd<\/li>\n<\/ol>\n<p>\u6700\u540e\u662f\u6211\u4eec\u7684task\u4efb\u52a1\u626b\u63cf\u6ce8\u89e3<\/p>\n<ol>\n<li>&lt;task:annotation-driven\/&gt;<\/li>\n<\/ol>\n<p>\u6211\u7684\u914d\u7f6e\u626b\u63cf\u4f4d\u7f6e\u662f\uff1a<\/p>\n<ol>\n<li>&lt;context:annotation-config\/&gt;<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0&lt;bean\u00a0class=&#8221;org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor&#8221;\/&gt;<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0&lt;context:component-scan\u00a0base-package=&#8221;com.test&#8221;\/&gt;<\/li>\n<\/ol>\n<p>\u626b\u63cf\u7684\u662fcom.test\u8fd9\u6837\u7684\u5305\u4e0b\u7684\u5185\u5bb9\u3001<\/p>\n<p>\u4e0b\u9762\u9700\u8981\u63a5\u53e3\u548c\u5b9e\u73b0\uff08\u6211\u7684\u8fd9\u51e0\u4e2ajava\u6587\u4ef6\u90fd\u662fcom.test\u7684\u5305\u4e0b\u7684\u3001\uff09<\/p>\n<ol>\n<li>public\u00a0interface\u00a0IMyTestService\u00a0{<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0myTest();<\/li>\n<li>}<\/li>\n<li>@Component\u00a0\u00a0\/\/import\u00a0org.springframework.stereotype.Component;<\/li>\n<li>public\u00a0class\u00a0MyTestServiceImpl\u00a0\u00a0implements\u00a0IMyTestService\u00a0{<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0@Scheduled(cron=&#8221;0\/5\u00a0*\u00a0*\u00a0\u00a0*\u00a0*\u00a0?\u00a0&#8220;)\u00a0\u00a0\u00a0\/\/\u6bcf5\u79d2\u6267\u884c\u4e00\u6b21<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0@Override<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0myTest(){<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0System.out.println(&#8220;\u8fdb\u5165\u6d4b\u8bd5&#8221;);<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/li>\n<li>}<\/li>\n<\/ol>\n<p>\u6267\u884c\u540e\u63a7\u5236\u53f0\u5c31\u4f1a\u6253\u5370\u51fa \u00a0 \u8fdb\u5165\u6d4b\u8bd5 \u00a0 \u4e86<\/p>\n<p>\u9700\u8981\u6ce8\u610f\u7684\u51e0\u70b9\uff1a<\/p>\n<p>1\u3001spring\u7684@Scheduled\u6ce8\u89e3 \u00a0\u9700\u8981\u5199\u5728\u5b9e\u73b0\u4e0a\u3001<\/p>\n<p>2\u3001 \u5b9a\u65f6\u5668\u7684\u4efb\u52a1\u65b9\u6cd5\u4e0d\u80fd\u6709\u8fd4\u56de\u503c\uff08\u5982\u679c\u6709\u8fd4\u56de\u503c\uff0cspring\u521d\u59cb\u5316\u7684\u65f6\u5019\u4f1a\u544a\u8bc9\u4f60\u6709\u4e2a\u9519\u8bef\u3001\u9700\u8981\u8bbe\u5b9a\u4e00\u4e2aproxytargetclass\u7684\u67d0\u4e2a\u503c\u4e3atrue\u3001\u5177\u4f53\u5c31\u53bb\u767e\u5ea6google\u5427\uff09<\/p>\n<p>3\u3001\u5b9e\u73b0\u7c7b\u4e0a\u8981\u6709\u7ec4\u4ef6\u7684\u6ce8\u89e3@Component<\/p>\n<p>\u5269\u4e0b\u7684\u5c31\u662fcorn\u8868\u8fbe\u5f0f\u4e86\u3001\u5177\u4f53\u4f7f\u7528\u4ee5\u53ca\u53c2\u6570\u8bf7\u767e\u5ea6google\u3001<\/p>\n<p>\u4e0b\u9762\u53ea\u4f8b\u51fa\u51e0\u4e2a\u5f0f\u5b50<\/p>\n<p>CRON\u8868\u8fbe\u5f0f \u00a0 \u00a0\u542b\u4e49<br \/>\n&#8220;0 0 12 * * ?&#8221; \u00a0 \u00a0\u6bcf\u5929\u4e2d\u5348\u5341\u4e8c\u70b9\u89e6\u53d1<br \/>\n&#8220;0 15 10 ? * *&#8221; \u00a0 \u00a0\u6bcf\u5929\u65e9\u4e0a10\uff1a15\u89e6\u53d1<br \/>\n&#8220;0 15 10 * * ?&#8221; \u00a0 \u00a0\u6bcf\u5929\u65e9\u4e0a10\uff1a15\u89e6\u53d1<br \/>\n&#8220;0 15 10 * * ? *&#8221; \u00a0 \u00a0\u6bcf\u5929\u65e9\u4e0a10\uff1a15\u89e6\u53d1<br \/>\n&#8220;0 15 10 * * ? 2005&#8221; \u00a0 \u00a02005\u5e74\u7684\u6bcf\u5929\u65e9\u4e0a10\uff1a15\u89e6\u53d1<br \/>\n&#8220;0 * 14 * * ?&#8221; \u00a0 \u00a0\u6bcf\u5929\u4ece\u4e0b\u53482\u70b9\u5f00\u59cb\u52302\u70b959\u5206\u6bcf\u5206\u949f\u4e00\u6b21\u89e6\u53d1<br \/>\n&#8220;0 0\/5 14 * * ?&#8221; \u00a0 \u00a0\u6bcf\u5929\u4ece\u4e0b\u53482\u70b9\u5f00\u59cb\u52302\uff1a55\u5206\u7ed3\u675f\u6bcf5\u5206\u949f\u4e00\u6b21\u89e6\u53d1<br \/>\n&#8220;0 0\/5 14,18 * * ?&#8221; \u00a0 \u00a0\u6bcf\u5929\u7684\u4e0b\u53482\u70b9\u81f32\uff1a55\u548c6\u70b9\u81f36\u70b955\u5206\u4e24\u4e2a\u65f6\u95f4\u6bb5\u5185\u6bcf5\u5206\u949f\u4e00\u6b21\u89e6\u53d1<br \/>\n&#8220;0 0-5 14 * * ?&#8221; \u00a0 \u00a0\u6bcf\u592914:00\u81f314:05\u6bcf\u5206\u949f\u4e00\u6b21\u89e6\u53d1<br \/>\n&#8220;0 10,44 14 ? 3 WED&#8221; \u00a0 \u00a0\u4e09\u6708\u7684\u6bcf\u5468\u4e09\u768414\uff1a10\u548c14\uff1a44\u89e6\u53d1<br \/>\n&#8220;0 15 10 ? * MON-FRI&#8221; \u00a0 \u00a0\u6bcf\u4e2a\u5468\u4e00\u3001\u5468\u4e8c\u3001\u5468\u4e09\u3001\u5468\u56db\u3001\u5468\u4e94\u768410\uff1a15\u89e6\u53d1<\/p>\n<p>\u53c2\u6570\u5206\u6790\uff1a<br \/>\n\u201c*\u201d\u2014\u2014\u5b57\u7b26\u53ef\u4ee5\u7528\u4e8e\u6240\u6709\u5b57\u6bb5\uff0c\u5728\u201c\u5206\u201d\u5b57\u6bb5\u4e2d\u8bbe\u4e3a&#8221;*&#8221;\u8868\u793a&#8221;\u6bcf\u4e00\u5206\u949f&#8221;\u7684\u542b\u4e49\u3002<br \/>\n\u201c?\u201d\u2014\u2014\u5b57\u7b26\u53ef\u4ee5\u7528\u5728\u201c\u65e5\u201d\u548c\u201c\u5468\u51e0\u201d\u5b57\u6bb5.\u5b83\u7528\u6765\u6307\u5b9a&#8217;\u4e0d\u660e\u786e\u7684\u503c&#8217;.\u8fd9\u5728\u4f60\u9700\u8981\u6307\u5b9a\u8fd9\u4e24\u4e2a\u5b57\u6bb5\u4e2d\u7684\u67d0\u4e00\u4e2a\u503c\u800c\u4e0d\u662f\u53e6\u5916\u4e00\u4e2a\u7684\u65f6\u5019\u4f1a\u88ab\u7528\u5230\u3002\u5728\u540e\u9762\u7684\u4f8b\u5b50\u4e2d\u53ef\u4ee5\u770b\u5230\u5176\u542b\u4e49\u3002<br \/>\n\u201c-\u201d\u2014\u2014\u5b57\u7b26\u88ab\u7528\u6765\u6307\u5b9a\u4e00\u4e2a\u503c\u7684\u8303\u56f4\uff0c\u6bd4\u5982\u5728\u201c\u5c0f\u65f6\u201d\u5b57\u6bb5\u4e2d\u8bbe\u4e3a&#8221;10-12&#8243;\u8868\u793a&#8221;10\u70b9\u523012\u70b9&#8221;\u3002<br \/>\n\u201c,\u201d\u2014\u2014\u5b57\u7b26\u6307\u5b9a\u6570\u4e2a\u503c\u3002\u6bd4\u5982\u5728\u201c\u5468\u51e0\u201d\u5b57\u6bb5\u4e2d\u8bbe\u4e3a&#8221;MON,WED,FRI&#8221;\u8868\u793a&#8221;the days Monday, Wednesday, and Friday&#8221;\u3002<br \/>\n\u201c\/\u201d\u2014\u2014\u5b57\u7b26\u7528\u6765\u6307\u5b9a\u4e00\u4e2a\u503c\u7684\u7684\u589e\u52a0\u5e45\u5ea6.\u6bd4\u5982\u5728\u201c\u79d2\u201d\u5b57\u6bb5\u4e2d\u8bbe\u7f6e\u4e3a&#8221;0\/15&#8243;\u8868\u793a&#8221;\u7b2c0, 15, 30,\u548c45\u79d2&#8221;\u3002\u800c&#8221;5\/15&#8243;\u5219\u8868\u793a&#8221;\u7b2c5, 20, 35,\u548c50&#8243;.\u5728&#8217;\/&#8217;\u524d\u52a0&#8221;*&#8221;\u5b57\u7b26\u76f8\u5f53\u4e8e\u6307\u5b9a\u4ece0\u79d2\u5f00\u59cb.\u6bcf\u4e2a\u5b57\u6bb5\u90fd\u6709\u4e00\u7cfb\u5217\u53ef\u4ee5\u5f00\u59cb\u6216\u7ed3\u675f\u7684\u6570\u503c\u3002\u5bf9\u4e8e\u201c\u79d2\u201d\u548c\u201c\u5206\u201d\u5b57\u6bb5\u6765\u8bf4\uff0c\u5176\u6570\u503c\u8303\u56f4\u4e3a0\u523059\uff0c\u5bf9\u4e8e\u201c\u5c0f\u65f6\u201d\u5b57\u6bb5\u6765\u8bf4\u5176\u4e3a0\u523023,\u5bf9\u4e8e\u201c\u65e5\u201d\u5b57\u6bb5\u6765\u8bf4\u4e3a0\u523031,\u800c\u5bf9\u4e8e\u201c\u6708\u201d\u5b57\u6bb5\u6765\u8bf4\u4e3a1\u523012\u3002&#8221;\/&#8221;\u5b57\u6bb5\u4ec5\u4ec5\u53ea\u662f\u5e2e\u52a9\u4f60\u5728\u5141\u8bb8\u7684\u6570\u503c\u8303\u56f4\u5185\u4ece\u5f00\u59cb&#8221;\u7b2cn&#8221;\u7684\u503c\u3002<br \/>\n\u201cL\u201d\u2014\u2014\u5b57\u7b26\u53ef\u7528\u5728\u201c\u65e5\u201d\u548c\u201c\u5468\u51e0\u201d\u8fd9\u4e24\u4e2a\u5b57\u6bb5\u3002\u5b83\u662f&#8221;last&#8221;\u7684\u7f29\u5199,\u4f46\u662f\u5728\u8fd9\u4e24\u4e2a\u5b57\u6bb5\u4e2d\u6709\u4e0d\u540c\u7684\u542b\u4e49\u3002\u4f8b\u5982,\u201c\u65e5\u201d\u5b57\u6bb5\u4e2d\u7684&#8221;L&#8221;\u8868\u793a&#8221;\u4e00\u4e2a\u6708\u4e2d\u7684\u6700\u540e\u4e00\u5929&#8221; \u2014\u2014\u5bf9\u4e8e\u4e00\u6708\u5c31\u662f31\u53f7\u5bf9\u4e8e\u4e8c\u6708\u6765\u8bf4\u5c31\u662f28\u53f7\uff08\u975e\u95f0\u5e74\uff09\u3002\u800c\u5728\u201c\u5468\u51e0\u201d\u5b57\u6bb5\u4e2d,\u5b83\u7b80\u5355\u7684\u8868\u793a&#8221;7&#8243; or &#8220;SAT&#8221;\uff0c\u4f46\u662f\u5982\u679c\u5728\u201c\u5468\u51e0\u201d\u5b57\u6bb5\u4e2d\u4f7f\u7528\u65f6\u8ddf\u5728\u67d0\u4e2a\u6570\u5b57\u4e4b\u540e,\u5b83\u8868\u793a&#8221;\u8be5\u6708\u6700\u540e\u4e00\u4e2a\u661f\u671f\u00d7&#8221; \u2014\u2014\u6bd4\u5982&#8221;6L&#8221;\u8868\u793a&#8221;\u8be5\u6708\u6700\u540e\u4e00\u4e2a\u5468\u4e94&#8221;\u3002\u5f53\u4f7f\u7528&#8217;L&#8217;\u9009\u9879\u65f6,\u6307\u5b9a\u786e\u5b9a\u7684\u5217\u8868\u6216\u8005\u8303\u56f4\u975e\u5e38\u91cd\u8981\uff0c\u5426\u5219\u4f60\u4f1a\u88ab\u7ed3\u679c\u641e\u7cca\u6d82\u7684\u3002<br \/>\n\u201cW\u201d\u2014\u2014\u53ef\u7528\u4e8e\u201c\u65e5\u201d\u5b57\u6bb5\u3002\u7528\u6765\u6307\u5b9a\u5386\u7ed9\u5b9a\u65e5\u671f\u6700\u8fd1\u7684\u5de5\u4f5c\u65e5(\u5468\u4e00\u5230\u5468\u4e94)\u3002\u6bd4\u5982\u4f60\u5c06\u201c\u65e5\u201d\u5b57\u6bb5\u8bbe\u4e3a&#8221;15W&#8221;\uff0c\u610f\u4e3a: &#8220;\u79bb\u8be5\u670815\u53f7\u6700\u8fd1\u7684\u5de5\u4f5c\u65e5&#8221;\u3002\u56e0\u6b64\u5982\u679c15\u53f7\u4e3a\u5468\u516d\uff0c\u89e6\u53d1\u5668\u4f1a\u572814\u53f7\u5373\u5468\u4e94\u8c03\u7528\u3002\u5982\u679c15\u53f7\u4e3a\u5468\u65e5,\u89e6\u53d1\u5668\u4f1a\u572816\u53f7\u4e5f\u5c31\u662f\u5468\u4e00\u89e6\u53d1\u3002\u5982\u679c15\u53f7\u4e3a\u5468\u4e8c,\u90a3\u4e48\u5f53\u5929\u5c31\u4f1a\u89e6\u53d1\u3002\u7136\u800c\u5982\u679c\u4f60\u5c06\u201c\u65e5\u201d\u5b57\u6bb5\u8bbe\u4e3a&#8221;1W&#8221;,\u800c\u4e00\u53f7\u53c8\u662f\u5468\u516d,\u89e6\u53d1\u5668\u4f1a\u4e8e\u4e0b\u5468\u4e00\u4e5f\u5c31\u662f\u5f53\u6708\u76843\u53f7\u89e6\u53d1,\u56e0\u4e3a\u5b83\u4e0d\u4f1a\u8d8a\u8fc7\u5f53\u6708\u7684\u503c\u7684\u8303\u56f4\u8fb9\u754c\u3002&#8217;W&#8217;\u5b57\u7b26\u53ea\u80fd\u7528\u4e8e\u201c\u65e5\u201d\u5b57\u6bb5\u7684\u503c\u4e3a\u5355\u72ec\u7684\u4e00\u5929\u800c\u4e0d\u662f\u4e00\u7cfb\u5217\u503c\u7684\u65f6\u5019\u3002<br \/>\n\u201cL\u201d\u548c\u201cW\u201d\u53ef\u4ee5\u7ec4\u5408\u7528\u4e8e\u201c\u65e5\u201d\u5b57\u6bb5\u8868\u793a\u4e3a&#8217;LW&#8217;\uff0c\u610f\u4e3a&#8221;\u8be5\u6708\u6700\u540e\u4e00\u4e2a\u5de5\u4f5c\u65e5&#8221;\u3002<br \/>\n\u201c#\u201d\u2014\u2014\u5b57\u7b26\u53ef\u7528\u4e8e\u201c\u5468\u51e0\u201d\u5b57\u6bb5\u3002\u8be5\u5b57\u7b26\u8868\u793a\u201c\u8be5\u6708\u7b2c\u51e0\u4e2a\u5468\u00d7\u201d\uff0c\u6bd4\u5982&#8221;6#3&#8243;\u8868\u793a\u8be5\u6708\u7b2c\u4e09\u4e2a\u5468\u4e94( 6\u8868\u793a\u5468\u4e94\u800c&#8221;#3&#8243;\u8be5\u6708\u7b2c\u4e09\u4e2a)\u3002\u518d\u6bd4\u5982: &#8220;2#1&#8243; =\u8868\u793a\u8be5\u6708\u7b2c\u4e00\u4e2a\u5468\u4e00\u800c&#8221;4#5&#8221; =\u8be5\u6708\u7b2c\u4e94\u4e2a\u5468\u4e09\u3002\u6ce8\u610f\u5982\u679c\u4f60\u6307\u5b9a&#8221;#5&#8243;\u8be5\u6708\u6ca1\u6709\u7b2c\u4e94\u4e2a\u201c\u5468\u00d7\u201d\uff0c\u8be5\u6708\u662f\u4e0d\u4f1a\u89e6\u53d1\u7684\u3002<br \/>\n\u201cC\u201d\u2014\u2014\u5b57\u7b26\u53ef\u7528\u4e8e\u201c\u65e5\u201d\u548c\u201c\u5468\u51e0\u201d\u5b57\u6bb5\uff0c\u5b83\u662f&#8221;calendar&#8221;\u7684\u7f29\u5199\u3002\u5b83\u8868\u793a\u4e3a\u57fa\u4e8e\u76f8\u5173\u7684\u65e5\u5386\u6240\u8ba1\u7b97\u51fa\u7684\u503c\uff08\u5982\u679c\u6709\u7684\u8bdd\uff09\u3002\u5982\u679c\u6ca1\u6709\u5173\u8054\u7684\u65e5\u5386,\u90a3\u5b83\u7b49\u540c\u4e8e\u5305\u542b\u5168\u90e8\u65e5\u5386\u3002\u201c\u65e5\u201d\u5b57\u6bb5\u503c\u4e3a&#8221;5C&#8221;\u8868\u793a&#8221;\u65e5\u5386\u4e2d\u7684\u7b2c\u4e00\u5929\u6216\u80055\u53f7\u4ee5\u540e&#8221;\uff0c\u201c\u5468\u51e0\u201d\u5b57\u6bb5\u503c\u4e3a&#8221;1C&#8221;\u5219\u8868\u793a&#8221;\u65e5\u5386\u4e2d\u7684\u7b2c\u4e00\u5929\u6216\u8005\u5468\u65e5\u4ee5\u540e&#8221;\u3002<br \/>\n\u5bf9\u4e8e\u201c\u6708\u4efd\u201d\u5b57\u6bb5\u548c\u201c\u5468\u51e0\u201d\u5b57\u6bb5\u6765\u8bf4\u5408\u6cd5\u7684\u5b57\u7b26\u90fd\u4e0d\u662f\u5927\u5c0f\u5199\u654f\u611f\u7684\u3002<\/p>\n<p>\u5b9e\u4f8b\u5c55\u793a<\/p>\n<p>Spring\u4e3b\u914d\u7f6e\u6587\u4ef6\uff1acontext-globle.xml<\/p>\n<p>xmlns \u591a\u52a0\u4e0b\u9762\u7684\u5185\u5bb9\u3001<\/p>\n<ol>\n<li>xmlns:task=&#8221;http:\/\/www.springframework.org\/schema\/task&#8221;<\/li>\n<\/ol>\n<p>\u7136\u540exsi:schemaLocation\u591a\u52a0\u4e0b\u9762\u7684\u5185\u5bb9\u3001<\/p>\n<ol>\n<li>http:\/\/www.springframework.org\/schema\/task<\/li>\n<li>http:\/\/www.springframework.org\/schema\/task\/spring-task-3.1.xsd<\/li>\n<\/ol>\n<p>\u6700\u540e\u662f\u6211\u4eec\u7684task\u4efb\u52a1\u626b\u63cf\u6ce8\u89e3<\/p>\n<ol>\n<li>&lt;task:annotation-driven\/&gt;<\/li>\n<\/ol>\n<p>\u5b9a\u65f6\u4efb\u52a1\u7c7b\uff1a TimoutUrlJob \u00a0&#8212;- \u5b9a\u65f6\u5411\u6307\u5b9aurl\u53d1\u9001Http \u00a0Get\u8bf7\u6c42<\/p>\n<pre class=\"hljs java\"><span class=\"hljs-meta\">@Component<\/span>\r\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">TimoutUrlJob<\/span> <\/span>{\r\n<span class=\"hljs-meta\">@Autowired<\/span>\r\n<span class=\"hljs-keyword\">private<\/span> CaptchaTimeoutUrlService captchaTimeoutUrlService;\r\n\r\n<span class=\"hljs-meta\">@Scheduled<\/span>(cron=<span class=\"hljs-string\">\"0\/5 * *  * * ? \"<\/span>)   <span class=\"hljs-comment\">\/\/\u6bcf5\u79d2\u6267\u884c\u4e00\u6b21  <\/span>\r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">test<\/span><span class=\"hljs-params\">()<\/span><\/span>{\r\nSystem.out.println(<span class=\"hljs-string\">\"aaaa\"<\/span>);\r\nList&lt;CaptchaTimeoutUrl&gt; list = captchaTimeoutUrlService.getTimeoutUrl();\r\n\r\nSystem.out.println(list);\r\n<span class=\"hljs-keyword\">for<\/span>(CaptchaTimeoutUrl captchaTimeoutUrl:list){\r\n<span class=\"hljs-keyword\">try<\/span> {\r\n<span class=\"hljs-comment\">\/\/\u4f7f\u7528Java\u4ee3\u7801\u8bf7\u6c42\u53cd\u9988\u8def\u5f84\uff0c\u5e76\u8fd4\u56dereqId\u548cresult\u7ed3\u679c<\/span>\r\nString backInfo = HttpRequestUtils.httpRequestGet(captchaTimeoutUrl.getUrl());\r\n<span class=\"hljs-keyword\">if<\/span>(<span class=\"hljs-keyword\">null<\/span>==backInfo||backInfo==<span class=\"hljs-string\">\"\"<\/span>){\r\nHttpRequestUtils.httpRequestGet(captchaTimeoutUrl.getUrl());\r\ncaptchaTimeoutUrlService.updateTimeputUrl(captchaTimeoutUrl);\r\n}\r\n} <span class=\"hljs-keyword\">catch<\/span> (Exception e) {\r\ne.printStackTrace();\r\n}\r\n}\r\n}\r\n}<\/pre>\n<p>\u53d1\u9001Get\u8bf7\u6c42\u7684\u5de5\u5177\u7c7b \uff1a<\/p>\n<pre class=\"hljs cs\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">HttpRequestUtils<\/span> {\r\n<span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">static<\/span> final String POST_URL=<span class=\"hljs-string\">\"http:\/\/localhost:8088\/services\/xxx\/xxx\/get.htm\"<\/span>;\r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">main<\/span>(<span class=\"hljs-params\">String[] args<\/span>) <\/span>{\r\n<span class=\"hljs-keyword\">try<\/span> {\r\nhttpRequestGet(POST_URL);\r\n} <span class=\"hljs-keyword\">catch<\/span> (Exception e) {\r\ne.printStackTrace();\r\n}\r\n}\r\n<span class=\"hljs-comment\">\/** \r\n     * http get \u8bf7\u6c42 \r\n     * @param urlStr \u8bf7\u6c42URL\u5730\u5740 \r\n     * @throws Exception \r\n     *\/<\/span>  \r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span>  String <span class=\"hljs-title\">httpRequestGet<\/span>(<span class=\"hljs-params\">String urlStr<\/span>) throws Exception<\/span>{  \r\n       <span class=\"hljs-comment\">\/\/URL\u62fc\u63a5,\u5982\uff1a\"http:\/\/www.baidu.com?name=HI,\u4e2d\u56fd\",\u8fd9\u91cc\u5bf9\u7279\u6b8a\u5b57\u7b26\u8fdb\u884c\u4e86\u7f16\u7801\uff0c\u4e0d\u7136\u4f1a\u4ea7\u751f\u4e71\u7801  <\/span>\r\n       URL url = <span class=\"hljs-keyword\">new<\/span> URL(urlStr);  \r\n       System.<span class=\"hljs-keyword\">out<\/span>.println(<span class=\"hljs-string\">\"++++++++++++++++++++++++++++++++++++++++++++++++\"<\/span>);\r\n       System.<span class=\"hljs-keyword\">out<\/span>.println(<span class=\"hljs-string\">\"\u8fdb\u5165\u56de\u8c03\u65b9\u6cd5\uff01\"<\/span>);\r\nSystem.<span class=\"hljs-keyword\">out<\/span>.println(urlStr);\r\nSystem.<span class=\"hljs-keyword\">out<\/span>.println(<span class=\"hljs-string\">\"++++++++++++++++++++++++++++++++++++++++++++++++\"<\/span>);\r\n       <span class=\"hljs-comment\">\/\/openConnection\u51fd\u6570\u4f1a\u6839\u636eURL\u7684\u534f\u8bae\u8fd4\u56de\u4e0d\u540c\u7684URLConnection\u5b50\u7c7b\u7684\u5bf9\u8c61  <\/span>\r\n       <span class=\"hljs-comment\">\/\/\u8fd9\u91ccURL\u662f\u4e00\u4e2ahttp,\u56e0\u6b64\u5b9e\u9645\u8fd4\u56de\u7684\u662fHttpURLConnection   <\/span>\r\n       HttpURLConnection httpConn = (HttpURLConnection)url.openConnection();  \r\n         \r\n       <span class=\"hljs-comment\">\/\/\u8fdb\u884c\u8fde\u63a5,\u5b9e\u9645\u4e0arequest\u8981\u5728\u4e0b\u4e00\u53e5\u7684connection.getInputStream()\u51fd\u6570\u4e2d\u624d\u4f1a\u771f\u6b63\u53d1\u5230 \u670d\u52a1\u5668****\u5f85\u9a8c\u8bc1  <\/span>\r\n       httpConn.connect();  \r\n         \r\n        <span class=\"hljs-comment\">\/\/ \u53d6\u5f97\u8f93\u5165\u6d41\uff0c\u5e76\u4f7f\u7528Reader\u8bfb\u53d6  <\/span>\r\n       BufferedReader reader = <span class=\"hljs-keyword\">new<\/span> BufferedReader(<span class=\"hljs-keyword\">new<\/span> InputStreamReader(httpConn.getInputStream()));  \r\n         \r\n       System.<span class=\"hljs-keyword\">out<\/span>.println(<span class=\"hljs-string\">\"=========get request\u63a5\u6536\u6570\u636e\u5185\u5bb9\u5f00\u59cb============\"<\/span>);  \r\n       String lines;  \r\n       <span class=\"hljs-keyword\">while<\/span> ((lines = reader.readLine()) != <span class=\"hljs-keyword\">null<\/span>) {  \r\n           System.<span class=\"hljs-keyword\">out<\/span>.println(lines);  \r\n       }  \r\n       System.<span class=\"hljs-keyword\">out<\/span>.println(reader);\r\n       reader.close();  \r\n       System.<span class=\"hljs-keyword\">out<\/span>.println(<span class=\"hljs-string\">\"=========get request\u63a5\u6536\u6570\u636e\u5185\u5bb9\u7ed3\u675f============\"<\/span>);  \r\n       httpConn.disconnect();  \r\n       <span class=\"hljs-keyword\">return<\/span> lines;\r\n   }  \r\n}<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Spring \u7684@Scheduled\u6ce8\u89e3\u5b9e\u73b0\u5b9a\u65f6\u4efb\u52a1\u6267\u884c\u548c\u8c03\u5ea6 \u9996\u5148\u8981\u914d\u7f6e\u6211\u4eec\u7684spring.xml \u00a0 &#8212; \u00a0\u5373spring\u7684\u4e3b\u914d\u7f6e\u6587\u4ef6(\u6709\u7684\u9879\u76ee&#8230;<\/p>\n<p class=\"read-more\"><a class=\"btn btn-default\" href=\"https:\/\/chenhaitao.com\/.wp-toolkit_I\/2018\/03\/09\/spring-%e7%9a%84scheduled%e6%b3%a8%e8%a7%a3%e5%ae%9e%e7%8e%b0%e5%ae%9a%e6%97%b6%e4%bb%bb%e5%8a%a1%e6%89%a7%e8%a1%8c%e5%92%8c%e8%b0%83%e5%ba%a6\/\"> Read More<span class=\"screen-reader-text\">  Read More<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[2],"tags":[14,5],"class_list":["post-32","post","type-post","status-publish","format-standard","hentry","category-2","tag-schedule","tag-spring"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9HWWB-w","jetpack-related-posts":[{"id":23,"url":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/2018\/03\/06\/springboot-schedule-%e9%85%8d%e7%bd%ae\/","url_meta":{"origin":32,"position":0},"title":"SpringBoot Schedule \u914d\u7f6e","author":"\u6770\u514b\u9648","date":"2018\u5e743\u67086\u65e5","format":false,"excerpt":"1. \u5b9a\u65f6\u4efb\u52a1\u5b9e\u73b0\u65b9\u5f0f \u5b9a\u65f6\u4efb\u52a1\u5b9e\u73b0\u65b9\u5f0f\uff1a Java\u81ea\u5e26\u7684java.util.Timer\u7c7b\uff0c\u8fd9\u4e2a\u7c7b\u5141\u2026","rel":"","context":"\u5728\u201c\u6280\u672f\u201d\u4e2d","block_context":{"text":"\u6280\u672f","link":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/category\/%e6%8a%80%e6%9c%af\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":84,"url":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/2018\/04\/11\/spring-boot%e4%bd%bf%e7%94%a8%ef%bc%9a%e5%ba%94%e7%94%a8%e5%90%af%e5%8a%a8%e5%90%8e%e5%81%9a%e7%9a%84%e4%b8%80%e4%ba%9b%e4%ba%8b\/","url_meta":{"origin":32,"position":1},"title":"Spring Boot\u4f7f\u7528\uff1a\u5e94\u7528\u542f\u52a8\u540e\u505a\u7684\u4e00\u4e9b\u4e8b","author":"\u6770\u514b\u9648","date":"2018\u5e744\u670811\u65e5","format":false,"excerpt":"\u6709\u65f6\u5019\u6211\u4eec\u9700\u8981\u5728\u5e94\u7528\u542f\u52a8\u6216\u8005\u91cd\u542f\u540e\u505a\u4e00\u4e9b\u5de5\u4f5c\uff0c\u6bd4\u5982\u5220\u9664\u4e00\u4e9b\u4e34\u65f6\u6587\u4ef6\u6216\u8005Redis\u4e2d\u7684\u7f13\u5b58\uff0c\u52a0\u8f7d\u4e00\u4e9b\u9891\u2026","rel":"","context":"\u5728\u201c\u5f00\u53d1\u201d\u4e2d","block_context":{"text":"\u5f00\u53d1","link":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/category\/%e5%bc%80%e5%8f%91\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":21,"url":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/2018\/03\/05\/spring%e4%ba%8b%e5%8a%a1%e9%85%8d%e7%bd%ae%e7%9a%84%e4%ba%94%e7%a7%8d%e6%96%b9%e5%bc%8f\/","url_meta":{"origin":32,"position":2},"title":"Spring\u4e8b\u52a1\u914d\u7f6e\u7684\u4e94\u79cd\u65b9\u5f0f","author":"\u6770\u514b\u9648","date":"2018\u5e743\u67085\u65e5","format":false,"excerpt":"Spring\u914d\u7f6e\u6587\u4ef6\u4e2d\u5173\u4e8eSpring\u4e8b\u52a1\u914d\u7f6e\u603b\u662f\u7531\u4e09\u4e2a\u7ec4\u6210\u90e8\u5206\uff0c\u5206\u522b\u662fDataSource\u3001Tra\u2026","rel":"","context":"\u5728\u201c\u6280\u672f\u201d\u4e2d","block_context":{"text":"\u6280\u672f","link":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/category\/%e6%8a%80%e6%9c%af\/"},"img":{"alt_text":"Spring\u4e8b\u52a1\u914d\u7f6e (2)","src":"https:\/\/i0.wp.com\/s1.51cto.com\/wyfs02\/M02\/A3\/BC\/wKioL1mk8N6h1y_wAADWVNHoRj827.jpeg-wh_651x-s_660001656.jpeg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/s1.51cto.com\/wyfs02\/M02\/A3\/BC\/wKioL1mk8N6h1y_wAADWVNHoRj827.jpeg-wh_651x-s_660001656.jpeg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/s1.51cto.com\/wyfs02\/M02\/A3\/BC\/wKioL1mk8N6h1y_wAADWVNHoRj827.jpeg-wh_651x-s_660001656.jpeg?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":121,"url":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/2018\/05\/08\/%e8%bd%accentos7-%e4%b8%8b-%e5%ae%89%e8%a3%85git-%e5%b9%b6%e5%ae%9e%e7%8e%b0%e8%87%aa%e5%8a%a8%e9%83%a8%e7%bd%b2\/","url_meta":{"origin":32,"position":3},"title":"[\u8f6c]centos7 \u4e0b \u5b89\u88c5git \u5e76\u5b9e\u73b0\u81ea\u52a8\u90e8\u7f72","author":"\u6770\u514b\u9648","date":"2018\u5e745\u67088\u65e5","format":false,"excerpt":"1\u3001\u9996\u5148\u9700\u8981\u5b89\u88c5Git\uff0c\u53ef\u4ee5\u4f7f\u7528yum\u6e90\u5728\u7ebf\u5b89\u88c5\uff1a yum install -y git 2\u3001\u521b\u5efa\u4e00\u2026","rel":"","context":"\u5728\u201c\u5f00\u53d1\u201d\u4e2d","block_context":{"text":"\u5f00\u53d1","link":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/category\/%e5%bc%80%e5%8f%91\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":5,"url":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/2018\/03\/03\/lombok%e7%9a%84%e4%bd%bf%e7%94%a8\/","url_meta":{"origin":32,"position":4},"title":"lombok\u7684\u4f7f\u7528","author":"\u6770\u514b\u9648","date":"2018\u5e743\u67083\u65e5","format":false,"excerpt":"\u80cc\u666f \u5728\u65e5\u5e38\u7684\u5f00\u53d1\u4e2d,\u6709\u5f88\u591a\u5de5\u4f5c\u90fd\u662f\u91cd\u590d\u7684,\u6bd4\u5982: - \u6211\u4eec\u4f1a\u5b9a\u4e49\u5f88\u591a\u7684domain\u5b9e\u4f53\u7c7b,\u9700\u8981\u7ed9\u6bcf\u2026","rel":"","context":"\u5728\u201c\u6280\u672f\u201d\u4e2d","block_context":{"text":"\u6280\u672f","link":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/category\/%e6%8a%80%e6%9c%af\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":71,"url":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/2018\/04\/04\/centos7%e4%b8%8brabbitmq%e6%9c%8d%e5%8a%a1%e5%ae%89%e8%a3%85%e9%85%8d%e7%bd%ae\/","url_meta":{"origin":32,"position":5},"title":"CentOS7\u4e0bRabbitMQ\u670d\u52a1\u5b89\u88c5\u914d\u7f6e","author":"\u6770\u514b\u9648","date":"2018\u5e744\u67084\u65e5","format":false,"excerpt":"RabbitMQ\u662f\u6d41\u884c\u7684\u5f00\u6e90\u6d88\u606f\u961f\u5217\u7cfb\u7edf\uff0c\u662fAMQP\uff08Advanced Message Queuin\u2026","rel":"","context":"\u5728\u201c\u8fd0\u7ef4\u201d\u4e2d","block_context":{"text":"\u8fd0\u7ef4","link":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/category\/%e8%bf%90%e7%bb%b4\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/wp-json\/wp\/v2\/posts\/32","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/wp-json\/wp\/v2\/comments?post=32"}],"version-history":[{"count":3,"href":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/wp-json\/wp\/v2\/posts\/32\/revisions"}],"predecessor-version":[{"id":35,"href":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/wp-json\/wp\/v2\/posts\/32\/revisions\/35"}],"wp:attachment":[{"href":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/wp-json\/wp\/v2\/media?parent=32"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/wp-json\/wp\/v2\/categories?post=32"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/wp-json\/wp\/v2\/tags?post=32"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}