??xml version="1.0" encoding="utf-8" standalone="yes"?>在线观看免费观看在线91,麻豆传媒在线播放,99久久激情http://www.aygfsteel.com/lcs868/category/36646.htmlzh-cnTue, 16 Dec 2008 11:03:59 GMTTue, 16 Dec 2008 11:03:59 GMT60spring cron表达?/title><link>http://www.aygfsteel.com/lcs868/articles/246649.html</link><dc:creator>lcs868</dc:creator><author>lcs868</author><pubDate>Tue, 16 Dec 2008 08:06:00 GMT</pubDate><guid>http://www.aygfsteel.com/lcs868/articles/246649.html</guid><wfw:comment>http://www.aygfsteel.com/lcs868/comments/246649.html</wfw:comment><comments>http://www.aygfsteel.com/lcs868/articles/246649.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/lcs868/comments/commentRss/246649.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/lcs868/services/trackbacks/246649.html</trackback:ping><description><![CDATA[<br /> <p><span style="font-size: 10pt">Cron表达式是一个字W串Q字W串??个空格隔开Q分开??个域Q每一个域代表一个含?Cron有如下两U语?<br /> 格式Q?<br /> Seconds Minutes Hours DayofMonth Month DayofWeek Year ?<br /> Seconds Minutes Hours DayofMonth Month DayofWeek <br /> 每一个域可出现的字符如下Q?</span></p> <p><br /> <span style="font-size: 10pt">代码<br /> Seconds:可出?-  *  / 四个字符Q有效范围ؓ(f)0-59的整?nbsp;   <br /> Minutes:可出?-  *  / 四个字符Q有效范围ؓ(f)0-59的整?nbsp;   <br /> Hours:可出?-  *  / 四个字符Q有效范围ؓ(f)0-23的整?nbsp;   <br /> DayofMonth:可出?-  *  / ? L W C八个字符Q有效范围ؓ(f)0-31的整?nbsp;    <br /> Month:可出?-  *  / 四个字符Q有效范围ؓ(f)1-12的整数或JAN-DEc    <br /> DayofWeek:可出?-  *  / ? L C #四个字符Q有效范围ؓ(f)1-7的整数或SUN-SAT两个范围?表示星期天,2表示星期一Q?依次cL    <br /> Year:可出?-  *  / 四个字符Q有效范围ؓ(f)1970-2099q?nbsp;  <br />  </span></p> <p><span style="font-size: 10pt">每一个域都用数字,但还可以出现如下Ҏ(gu)字符Q它们的含义是:(x) </span></p> <p><br /> <span style="font-size: 10pt">代码<br /> (1)*Q表C匹配该域的L|假如在Minutes域?,卌C每分钟都会(x)触发事g?nbsp;   <br />    <br /> (2)?:只能用在DayofMonth和DayofWeek两个域。它也匹配域的Q意|但实际不?x)。因为DayofMonth和DayofWeek?x)相互?jing)响。例如想在每月的20日触发调度,不管20日到底是星期几,则只能用如下写法:(x) 13  13 15 20 * ?,其中最后一位只能用Q,而不能?Q如果?表示不管星期几都?x)触发,实际上ƈ不是q样?nbsp;   <br />    <br /> (3)-:表示范围Q例如在Minutes域?-20Q表CZ5分到20分钟每分钟触发一?nbsp;   <br />    <br /> (4)/Q表Cv始时间开始触发,然后每隔固定旉触发一ơ,例如在Minutes域?/20,则意味着5分钟触发一ơ,?5Q?5{分别触发一?    <br />    <br /> (5),:表示列出枚D值倹{例如:(x)在Minutes域?,20Q则意味着??0分每分钟触发一ơ?nbsp;   <br />    <br /> (6)L:表示最后,只能出现在DayofWeek和DayofMonth域,如果在DayofWeek域?L,意味着在最后的一个星期四触发?nbsp;   <br />    <br /> (7)W:表示有效工作?周一到周?,只能出现在DayofMonth域,pȝ在L定日期的最q的有效工作日触发事件。例如:(x)在DayofMonth使用5WQ如?日是星期六,则将在最q的工作日:(x)星期五,?日触发。如?日是星期天,则在6日触发;如果5日在星期一到星期五中的一天,则就?日触发。另外一点,W(xu)的最q寻找不?x)跨q月?nbsp;   <br />    <br /> (8)LW:q两个字W可以连用,表示在某个月最后一个工作日Q即最后一个星期五?nbsp;   <br />    <br /> (9)#:用于定每个月第几个星期几,只能出现在DayofMonth域。例如在4#2Q表C某月的W二个星期三?nbsp;   <br /> 丑և个例? </span></p> <p><br /> <span style="font-size: 10pt">代码<br /> 0 0  2  1 *  ? *  表示在每月的1日的凌晨2点调度Q?nbsp;    <br /> 0 15 10 ? *  MON-FRI 表示周一到周五每天上?0Q?5执行作业             <br /> 0 15 10 ? 6L 2002-2006 表示200-2006q的每个月的最后一个星期五上午10:15执行作业   <br /> 91linux </span></p> <p><br /> <span style="font-size: 10pt">一个cron表达式有臛_6个(也可?个)(j)有空格分隔的旉元素?/span></p> <p><span style="font-size: 10pt">按顺序依ơؓ(f) <br /> U(0~59Q?<br /> 分钟Q?~59Q?</span></p> <p><span style="font-size: 10pt">时Q?~23Q?</span></p> <p><span style="font-size: 10pt">天(月)(j)Q?~31Q但是你需要考虑你月的天敎ͼ(j) </span></p> <p><span style="font-size: 10pt">月(0~11Q?</span></p> <p><span style="font-size: 10pt">天(星期Q(1~7 1=SUN ?SUNQMONQTUEQW(xu)EDQTHUQFRIQSATQ?</span></p> <p><span style="font-size: 10pt">7.q䆾Q?970Q?099Q?/span></p> <p><span style="font-size: 10pt">其中每个元素可以是一个??),一个连l区?9-12),一个间隔时?8-18/4)(/表示每隔4时),一个列?1,3,5),通配W。由?月䆾中的日期"?星期中的日期"q两个元素互斥的,必须要对其中一个设|?. </span></p> <p><span style="font-size: 10pt">0 0 10,14,16 * * ? 每天上午10点,下午2点,4?br /> 0 0/30 9-17 * * ?   朝九(ji)晚五工作旉内每半小?br /> 0 0 12 ? * WED 表示每个星期三中?2?<br /> "0 0 12 * * ?" 每天中午12点触?<br /> "0 15 10 ? * *" 每天上午10:15触发 <br /> "0 15 10 * * ?" 每天上午10:15触发 <br /> "0 15 10 * * ? *" 每天上午10:15触发 <br /> "0 15 10 * * ? 2005" 2005q的每天上午10:15触发 <br /> "0 * 14 * * ?" 在每天下?点到下午2:59期间的每1分钟触发 <br /> "0 0/5 14 * * ?" 在每天下?点到下午2:55期间的每5分钟触发 <br /> "0 0/5 14,18 * * ?" 在每天下?点到2:55期间和下?点到6:55期间的每5分钟触发 <br /> "0 0-5 14 * * ?" 在每天下?点到下午2:05期间的每1分钟触发 <br /> "0 10,44 14 ? 3 WED" 每年三月的星期三的下?:10?:44触发 <br /> "0 15 10 ? * MON-FRI" 周一臛_五的上午10:15触发 <br /> "0 15 10 15 * ?" 每月15日上?0:15触发 <br /> "0 15 10 L * ?" 每月最后一日的上午10:15触发 <br /> "0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发 <br /> "0 15 10 ? * 6L 2002-2005" 2002q至2005q的每月的最后一个星期五上午10:15触发 <br /> "0 15 10 ? * 6#3" 每月的第三个星期五上?0:15触发 </span></p> <p><br /> <span style="font-size: 10pt">有些子表辑ּ能包含一些范围或列表 </span></p> <p><span style="font-size: 10pt">例如Q子表达式(天(星期Q)(j)可以?“MON-FRI”Q?#8220;MONQW(xu)EDQFRI”Q?#8220;MON-WED,SAT” </span></p> <p><span style="font-size: 10pt">“*”字符代表所有可能的?</span></p> <p><span style="font-size: 10pt">因此Q?#8220;*”在子表达式(月)(j)里表C每个月的含义,“*”在子表达式(天(星期Q)(j)表示星期的每一?</span></p> <p><span style="font-size: 10pt"> </span></p> <p><span style="font-size: 10pt">“/”字符用来指定数值的增量 </span></p> <p><span style="font-size: 10pt">例如Q在子表辑ּQ分钟)(j)里的“0/15”表示从第0分钟开始,?5分钟 </span></p> <p><span style="font-size: 10pt">         在子表达式(分钟Q里?#8220;3/20”表示从第3分钟开始,?0分钟Q它?#8220;3Q?3Q?3”Q的含义一?</span></p> <p><br /> <span style="font-size: 10pt">“Q?#8221;字符仅被用于天(月)(j)和天Q星期)(j)两个子表辑ּQ表CZ指定?</span></p> <p><span style="font-size: 10pt">?个子表达式其中之一被指定了(jin)g后,Z(jin)避免冲突Q需要将另一个子表达式的D?#8220;Q?#8221; </span></p> <p><span style="font-size: 10pt"> </span></p> <p><span style="font-size: 10pt">“L” 字符仅被用于天(月)(j)和天Q星期)(j)两个子表辑ּQ它是单?#8220;last”的羃?</span></p> <p><span style="font-size: 10pt">但是它在两个子表辑ּ里的含义是不同的?</span></p> <p><span style="font-size: 10pt">在天Q月Q子表达式中Q?#8220;L”表示一个月的最后一?</span></p> <p><span style="font-size: 10pt">在天Q星期)(j)自表辑ּ中,“L”表示一个星期的最后一天,也就是SAT </span></p> <p><span style="font-size: 10pt">如果?#8220;L”前有具体的内容,它就h其他的含义了(jin) </span></p> <p><span style="font-size: 10pt">例如Q?#8220;6L”表示q个月的倒数W6天,“QRQL”表示q个月的最一个星期五 </span></p> <p><span style="font-size: 10pt">注意Q在使用“L”参数Ӟ不要指定列表或范_(d)因ؓ(f)q会(x)D问题 </span></p> <p><span style="font-size: 10pt"> </span></p> <p><span style="font-size: 10pt">字段   允许?nbsp;  允许的特D字W?<br /> U?nbsp;   0-59    , - * / <br /> ?nbsp;   0-59    , - * / <br /> 时    0-23    , - * / <br /> 日期    1-31    , - * ? / L W C <br /> 月䆾    1-12 或?JAN-DEC    , - * / <br /> 星期    1-7 或?SUN-SAT    , - * ? / L C # <br /> q_(d)可选)(j)    留空, 1970-2099    , - * / </span></p> <img src ="http://www.aygfsteel.com/lcs868/aggbug/246649.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/lcs868/" target="_blank">lcs868</a> 2008-12-16 16:06 <a href="http://www.aygfsteel.com/lcs868/articles/246649.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>spring配置文g注意事项http://www.aygfsteel.com/lcs868/articles/246050.htmllcs868lcs868Fri, 12 Dec 2008 14:56:00 GMThttp://www.aygfsteel.com/lcs868/articles/246050.htmlhttp://www.aygfsteel.com/lcs868/comments/246050.htmlhttp://www.aygfsteel.com/lcs868/articles/246050.html#Feedback0http://www.aygfsteel.com/lcs868/comments/commentRss/246050.htmlhttp://www.aygfsteel.com/lcs868/services/trackbacks/246050.html1。不要用autowiring

  Spring可以通过cȝ自省来自动绑定其依赖部分Q得你不必明确指明bean的属性和构造器。Bean的属性可以通过属性名U或cd匚w来实现自动绑定。构造器通过cd匚w来实现自动绑定。你甚至可以指定自动(g)自动绑定模式,它可以引导Spring选择一U适当的运行机制。先来看看下面的一个例子:(x)

<bean id="orderService" class="com.lizjason.spring.OrderService" autowire="byName"/>  OrderServicecȝ属性名在容器中用于匚wbean实例。自动绑定可以潜在地节省一些打字和减少一些؜乱。但是在现实世界的工E里你不应该使用q种方式Q这是因为它牺牲?jin)配|的清晰性和可维护性。许多指南和介绍中大量吹捧自动绑定是Spring的一U极好的特征而没有提到这一Ҏ(gu)所带来的牺牌Ӏ依我的观点Q这像Spring中的objectQpoolingQ它更像是一Uؓ(f)?jin)占据更多?jng)场的商业特征。它对于XML配置文g的小巧化是一个好办法Q但实际上也增加?jin)复杂程度,其当你q行有大量类声明的工E时。虽然Spring允许你؜合自动绑定和手动l定Q但是这个矛盾会(x)使XML配置更加晦ӆ难懂?

2.使用通俗的命?/strong>

  q个方式对于Java~码也一样适用。在工程中用清晰的、描q性的、协调的通俗名称对于开发者理解XML配置是十分有益的。例如对于bean IDQ你可以Ҏ(gu)通俗的Javacd来命名它。对于例子中OrderServiceDAO的bean ID命名为orderServiceDAO。对于大的工E,你可以在bean ID前面加上包名作ؓ(f)前缀?

3. 使用z的形式

  zŞ式避免了(jin)冗长Q是因ؓ(f)它从子元素中属性值和参考写到属性中。例如下面的例子Q?

<bean id="orderService" class="com.lizjason.spring.OrderService">
<property name="companyName">
<value>lizjason</value>
</property>
<constructor-arg>
<ref bean="orderDAO">
</constructor-arg>
</bean>

 

  可以使用zŞ式将上述代码重写为:(x)

 

<bean id="orderService" class="com.lizjason.spring.OrderService">
<property name="companyName" value="lizjason"/>
<constructor-arg ref="orderDAO"/>
</bean>

  zŞ式功能在1.2版本中可以用。对?lt;ref local="...">没有zŞ式?
zŞ式不但可以节U你的打字,而且可以使XML配置文g清晰。它最引h注目的是当在一个配|文件中有大量定义的cL可以提高易读性?

4. 对于构造器参数匚wQ类型名比序号好?/strong>

  当一个构造器含有一个以上的同种cd的参敎ͼ或者属性值的标签已经被占用时QSpring允许你用从0计数的序h解决q些?x)带来؜淆的问题。例如:(x)

<bean id="billingService" class="com.lizjason.spring.BillingService">
<constructor-arg index="0" value="lizjason"/>
<constructor-arg index="1" value="100"/>
</bean>


  像下面这P利用cd属性来~写?x)更好一些:(x)

<bean id="billingService" class="com.lizjason.spring.BillingService">
<constructor-arg type="java.lang.String" value="lizjason"/>
<constructor-arg type="int" value="100"/>
</bean>

  使用索引可以E稍减少一些冗长,但是和用类型属性相比,它还是有Ҏ(gu)发生错误的們֐和难于阅ȝ~点。你应该只在构造器参数不明的时候,才用烦(ch)引这一Ҏ(gu)
5. 可能重用已定义q的bean

  Spring提供一U类似承一L(fng)机制来减配|信息的复制q简化XML配置。定义一个子cd以从它父c那里扉K|信息,而父cd质上作ؓ(f)子类的一个模ѝ这是大工E中所谓的重用。你所需要做的就是在父类bean中设|a(chn)bstract=trueQ然后在子bean注明它自q父类bean。例如:(x)

 

<bean id="abstractService" abstract="true" class="com.lizjason.spring.AbstractService">
<property name="companyName" value="lizjason"/>
</bean>
<bean id="shippingService" parent="abstractService" class="com.lizjason.spring.ShippingService">
<property name="shippedBy" value="lizjason"/>
</bean>


  ShippingServicecMabstractServicec那里承companyName属性的值——lizjason。如果你没有Z个bean指明cLfactoryҎ(gu)Q那么这个bean便是抽象的?

6. 量使用ApplicationContext来装配定义的bean

  像在Ant脚本中的引用一PSpring的引用对于装配模块化的bean来说是很有用的。例如:(x)

 

<beans>
<import resource="billingServices.xml"/>
<import resource="shippingServices.xml"/>
<bean id="orderService" class="com.lizjason.spring.OrderService"/>
<beans>

  相对于用import在XML配置中来预装配,通过ApplicationContext来配|这些beansQ显得更加灵zR利用ApplicationContext也得XML配置易于理。你可以像下面的例子那样在ApplictionContext构造器里布|beanQ?

 

String[] serviceResources =
...{"orderServices.xml", "billingServices.xml", "shippingServices.xml"};
 ApplicationContext orderServiceContext =
new ClassPathXmlApplicationContext(serviceResources);

7. 利用id作ؓ(f)bean的标识符

  你可以指定一个id或名U来作ؓ(f)bean的标识符。虽然用id不会(x)提高易读性,但是它可以让XML parser对bean的引用有效方面进行更好的验证。如果由于XML IDREF的限制而不能用某个idQ你可以利用names来作为bean的标识符。XML IDREF的限制是id必须以字母开_(d)或者在XML规范中定义的标点W号Q,后面接着字母Q数字,q字P下划U,冒号{。实际上Q遇到XML IDREF限制的问题是很少见的?

8. 在开发阶D用依赖检?/strong>

  你可以在bean中给依赖(g)验的属性设||而不采用原先默认的空|属性设|例如simpleQobject或allQ以便容器进行依赖检验。当bean的全部的属性(或某cd性)(j)需要被明确讄或自动绑定时Q依赖检验便昑־很有用?

 

<bean id="orderService" class="com.lizjason.spring.OrderService"
  dependency-check="objects">
<property name="companyName" value="lizjason"/>
<constructor-arg ref="orderDAO"/>
</bean>

  在这个例子里Q容器确保ؓ(f)orderService bean讄的属性不是primitives 或?collections。ؓ(f)所有的bean讄默认依赖(g)也是可以的Q但是我们很这样做Q是因ؓ(f)有些bean的属性根本就不必讄?/span>

9. 为每个配|文件加上一个header comment

  最好用descriptive id和名U来代替在XML配置文g中的注释。此外,加上一个配|文件header也很有用处,它可以概q文件中所定义的bean。你可以选择描q内容加入description标签中。例如:(x)

<beans>
<description> This file defines billing service related beans and it depends on
 baseServices.xml,which provides service bean templates...
</description> ...
</beans>


  使用description标签的一个好处是可以Ҏ(gu)地利用工具从标签中选取出descriptionQ的内容Q?

10. 对于M变化Q要与队友积极交?/strong>

  当你重构Java代码Ӟ你需要随时更新配|文件ƈ且通知队友。XML配置文g也是代码Q它们是应用E序的至关重要的部分Q但是它们难于阅dl护。大部分旉你既要阅读XML配置文g又要阅读q行中的Java代码?

11. Setter injection优(sh)constructor injection

  Spring提供3U类型的依赖注入Q?constructor injection,setter injection, 和method injection。我们一般只用前两种cd?

 

<bean id="orderService" class="com.lizjason.spring.OrderService">
<constructor-arg ref="orderDAO"/>
</bean>
<bean id="billingService" class="com.lizjason.spring.BillingService">
<property name="billingDAO" ref="billingDAO">
</bean>


  q个例子中,orderServicecM用的是constructor injectionQ而BillingServicecM用的是setter injection。constructor injection可以保bean不会(x)在一个非法状态下被创建,但是setter injection更加灉|q且更易理Q尤其当cd在很多属性ƈ且其中一些是可选的情况下?

12. 不要滥用依赖注入

  作ؓ(f)最后一点,Spring ApplicationContext可以替你创徏Java对象Q但是ƈ不是所有的Java对象都通过依赖注入来创建的。例如,全局的对象不应该通过ApplicationContext来创建。Spring是一个很的框架Q但是,易L和易管理性而言Q当定义大量bean的时候,ZXML的配|问题就?x)突出。过度的依赖注入?x)XML配置变得复杂而且臃肿。记住!使用强大的IDEӞ例如Eclipse和IntelliJQ与XML文g相比QJava代码更加易读Q易l护Q易理?

  ȝ

  对于Spring的配|,XML是很优秀的方式。但当定义大量beanӞZXML配置?x)变得冗长,W拙。Spring提供?jin)丰富的配置选项。适当地利用其中的选项可以使XML配置清晰Q但是,有些选项Q例如autowiringQ自动绑定)(j)Q往往?x)降低易L和易维护性。文章中所列D的实例,可以帮助你创建出清晰易读的XML配置文g?



lcs868 2008-12-12 22:56 发表评论
]]>
վ֩ģ壺 Զ| | ߶| | ܿ| | | | | ӱ| ˮ| | | | ʹ| ;| | | | ɽ| ÷| ɽ| ̳| Ϫ| | | | | ԭ| ȫ| ɽ| | Ҷ| ͷ| ƽ| | DZɽ| | | ˮ| ͩ|