ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美裸体xxxx极品少妇,精品国产成人av,久久国产直播http://www.aygfsteel.com/Crying/category/25485.htmlå¦?æž?æ•?äº?è®?ä½?ç”?æ°?, é‚?è¯?æ˜?ä½?æ²?æœ?èƒ?ä»?çš?æŠ?握! zh-cnSun, 16 Mar 2008 13:43:51 GMTSun, 16 Mar 2008 13:43:51 GMT60如何在Spring中配¾|®å®šæ—¶ä“QåŠ?http://www.aygfsteel.com/Crying/articles/186638.htmlCryingCryingSun, 16 Mar 2008 10:31:00 GMThttp://www.aygfsteel.com/Crying/articles/186638.htmlhttp://www.aygfsteel.com/Crying/comments/186638.htmlhttp://www.aygfsteel.com/Crying/articles/186638.html#Feedback0http://www.aygfsteel.com/Crying/comments/commentRss/186638.htmlhttp://www.aygfsteel.com/Crying/services/trackbacks/186638.htmlhttp://www.aygfsteel.com/amigoxie/archive/2008/02/29/183046.html


首先åQŒå¦‚果你åœ?/span>web.xmlæ–‡äšg中的配置是这æ ïLš„åQ?/span>

  <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
         /WEB-INF/classes/applicationContext-*.xml
        </param-value>
 </context-param>

那么需要在工程下创å»ÞZ¸€ä¸ªä»¥applicationContext- 为开头的xmlæ–‡äšgeg:applicationContext-jobconfig.xml

xml的头和结ž®ùNƒ¨åˆ†è·Ÿå…¶ä»–spring配置文äšgç›æ€¼¼åQŒå°±ä¸èµ˜˜qŽÍ¼Œæ­£æ–‡å¦‚下åQ?/span>

 <bean id="youJobName(¾cÕdˆ«å?/span>)" class="com.******.YourJobClassLocation(¾cȝš„定位)" />
 <bean id="doYourJob(
别名)" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
     <property name="targetObject">
      <ref bean="youJobName(
¾cÕdˆ«å?/span>)""/>
     </property>
     <property name="targetMethod">
      <value>runMethodName(
定时执行的方法名)</value>
     </property>
 </bean>
 
 <bean id="youJobNameTrigger(
触发器别�/span>)" class="org.springframework.scheduling.quartz.CronTriggerBean">
   <property name="jobDetail">
     <ref bean="doYourJob(
别名)""/>
   </property>
   <property name="cronExpression">
    <value>0 0/20 * * * ?(
定时的时间配¾|?/span>)</value>
   </property>
 </bean>

 <bean id="doScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
   <property name="triggers">
     <list>
      <ref local="youJobNameTrigger(
触发器别å?/span>)"/>  
     </list>
   </property>
 </bean>

˜q™æ ·çš„配¾|®å‡ æœ¬å°±å¯ä»¥˜qè{了,但是有一个地方可能是你需要根据你的需求来¼‹®å®šçš„,那就是触发时间ã€?/span>

下面有一些关于时间配¾|®çš„说明åQ?/span>

字段™åºåº

 

允许�/span>

 

允许的特ŒDŠå­—½W?/span>

¿U?/span>

0-59

, - * /

�/span>

0-59

, - * /

ž®æ—¶

0-23

, - * /

日期

1-31

, - * ? / L W C

月䆾

1-12 æˆ–è€?JAN-DEC

, - * /

星期

1-7 æˆ–è€?SUN-SAT

, - * ? / L C #

òqß_¼ˆå¯é€‰ï¼‰

留空, 1970-2099

, - * /


The '*' character is used to specify all values. For example, "*" in the minute field means "every minute".
“*”
字符被用来指定所有的倹{€‚如åQ?/span>”*“在分钟的字段域里表示每分é’?/span>ã€?/span>
The '?' character is allowed for the day-of-month and day-of-week fields. It is used to specify 'no specific value'. This is useful when you need to specify something in one of the two fileds, but not the other. See the examples below for clarification.
“?”
字符只在日期域和星期域中使用。它被用来指å®?/span>非明¼‹®çš„å€?/span>。当你需要通过在这两个域中的一个来指定一些东西的时候,它是有用的。看下面的例子你ž®×ƒ¼šæ˜Žç™½ã€?/span>
月䆾中的日期和星期中的日期这两个元素时互斥的一起应该通过讄¡½®ä¸€ä¸ªé—®å?/span>(?)来表明不惌™®¾¾|®é‚£ä¸ªå­—ŒD?/span>

The '-' character is used to specify ranges For example "10-12" in the hour field means "the hours 10, 11 and 12".
“-”
字符被用来指定一个范围。如åQ?/span>“10-12”在小时域意味着“10炏V€?/span>11炏V€?/span>12ç‚?/span>ã€?/span>

The ',' character is used to specify additional values. For example "MON,WED,FRI" in the day-of-week field means "the days Monday, Wednesday, and Friday".
“,”
字符被用来指定另外的倹{€‚如åQ?/span>“MON,WED,FRI”在星期域里表½C?/span>星期一、星期三、星期五”.

The '/' character is used to specify increments. For example "0/15" in the seconds field means "the seconds 0, 15, 30, and 45". And "5/15" in the seconds field means "the seconds 5, 20, 35, and 50". Specifying '*' before the '/' is equivalent to specifying 0 is the value to start with. Essentially, for each field in the expression, there is a set of numbers that can be turned on or off. For seconds and minutes, the numbers range from 0 to 59. For hours 0 to 23, for days of the month 0 to 31, and for months 1 to 12. The "/" character simply helps you turn on every "nth" value in the given set. Thus "7/6" in the month field only turns on month "7", it does NOT mean every 6th month, please note that subtlety.

"/"字符用来指定渐增的倹{€‚例å¦?/span>0/15出现在秒字段的时候意味着在第0åQ?/span>15åQ?/span>30å’?/span>45¿U?/span>åQˆçš„æ—¶å€™è¢«è§¦å‘åQ‰ã€‚è€?/span>5/15出现在秒字段的时候意味着在第5åQ?/span>20åQ?/span>35和第50¿U?/span>åQˆçš„æ—¶å€™è¢«è§¦å‘åQ‰ã€?/span>"*/"å’?/span>"0/"的指定是½{‰ä­hçš„ã€?/span>

注:当分å­?/span>+分母的值大于该字段的最大å€û|¼Œå¦‚在¿U’钟字段出现45/20的时候,表示在第45¿U’以后的æ¯?/span>20会触发一‹Æ¡ï¼Œä½†æ˜¯20¿U’以后又½Ž—做另外的时间段以内了,所以该字段çš?/span>/20卛_¤±æ•ˆï¼Œå¦‚改ä¸?/span>45/10 则只æœ?/span>½W?/span>45 å’?/span>55¿U’会执行一‹Æ¡ã€?/span>

The 'L' character is allowed for the day-of-month and day-of-week fields. This character is short-hand for "last", but it has different meaning in each of the two fields. For example, the value "L" in the day-of-month field means "the last day of the month" - day 31 for January, day 28 for February on non-leap years. If used in the day-of-week field by itself, it simply means "7" or "SAT". But if used in the day-of-week field after another value, it means "the last xxx day of the month" - for example "6L" means "the last friday of the month". When using the 'L' option, it is important not to specify lists, or ranges of values, as you'll get confusing results.

L
æ˜?/span>‘last’的省略写法可以表½C?/span>day-of-monthå’?/span>day-of-week域,但在两个字段中的意思不同,例如day-of-month域中表示一个月的最后一天,
如果åœ?/span>day-of-week域表½C?/span>‘7’或è€?/span>‘SAT’åQŒå¦‚果在day-of-week域中前面加上数字åQŒå®ƒè¡¨ç¤ºä¸€ä¸ªæœˆçš„æœ€åŽå‡ å¤©ï¼Œä¾‹å¦‚‘6L’ž®Þp¡¨½CÞZ¸€ä¸ªæœˆçš„æœ€åŽä¸€ä¸?/span>
星期五,

The 'W' character is allowed for the day-of-month field. This character is used to specify the weekday (Monday-Friday) nearest the given day. As an example, if you were to specify "15W" as the value for the day-of-month field, the meaning is: "the nearest weekday to the 15th of the month". So if the 15th is a Saturday, the trigger will fire on Friday the 14th. If the 15th is a Sunday, the trigger will fire on Monday the 16th. If the 15th is a Tuesday, then it will fire on Tuesday the 15th. However if you specify "1W" as the value for day-of-month, and the 1st is a Saturday, the trigger will fire on Monday the 3rd, as it will not 'jump' over the boundary of a month's days. The 'W' character can only be specified when the day-of-month is a single day, not a range or list of days
.
The 'L' and 'W' characters can also be combined for the day-of-month expression to yield 'LW', which translates to "last weekday of the month".

The '#' character is allowed for the day-of-week field. This character is used to specify "the nth" XXX day of the month. For example, the value of "6#3" in the day-of-week field means the third Friday of the month (day 6 = Friday and "#3" = the 3rd one in the month). Other examples: "2#1" = the first Monday of the month and "4#5" = the fifth Wednesday of the month. Note that if you specify "#5" and there is not 5 of the given day-of-week in the month, then no firing will occur that month.

The 'C' character is allowed for the day-of-month and day-of-week fields. This character is short-hand for "calendar". This means values are calculated against the associated calendar, if any. If no calendar is associated, then it is equivalent to having an all-inclusive calendar. A value of "5C" in the day-of-month field means "the first day included by the calendar on or after the 5th". A value of "1C" in the day-of-week field means "the first day included by the calendar on or after sunday".
关于cronExpression的介¾l?/span>:
 
字段允许å€?/span>允许的特ŒDŠå­—½W?/span>
¿U?/span> 0-59 , - * /
�/span> 0-59 , - * /
ž®æ—¶ 0-23 , - * /
日期 1-31 , - * ? / L W C
月䆾 1-12 或�/span> JAN-DEC , - * /
星期 1-7 或�/span> SUN-SAT , - * ? / L C #
òqß_¼ˆå¯é€‰ï¼‰ç•™ç©º, 1970-2099 , - * /
表达式意�/span>
"0 0 12 * * ?"
每天中午12点触�/span>
"0 15 10 ? * *"
每天上午10:15触发
"0 15 10 * * ?"
每天上午10:15触发
"0 15 10 * * ? *"
每天上午10:15触发
"0 15 10 * * ? 2005" 2005
òq´çš„æ¯å¤©ä¸Šåˆ10:15触发
"0 * 14 * * ?"
在每天下�/span>2点到下午2:59期间的每1分钟触发
"0 0/5 14 * * ?"
在每天下�/span>2点到下午2:55期间的每5分钟触发
"0 0/5 14,18 * * ?"
在每天下�/span>2点到2:55期间和下�/span>6点到6:55期间的每5分钟触发
"0 0-5 14 * * ?"
在每天下�/span>2点到下午2:05期间的每1分钟触发
"0 10,44 14 ? 3 WED"
每年三月的星期三的下�/span>2:10�/span>2:44触发
"0 15 10 ? * MON-FRI"
周一臛_‘¨äº”的上午10:15触发
"0 15 10 15 * ?"
每月15日上�/span>10:15触发
"0 15 10 L * ?"
每月最后一日的上午10:15触发
"0 15 10 ? * 6L"
每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6L 2002-2005" 2002
òq´è‡³2005òq´çš„æ¯æœˆçš„æœ€åŽä¸€ä¸ªæ˜ŸæœŸäº”上午10:15触发
"0 15 10 ? * 6#3"
每月的第三个星期五上�/span>10:15触发
每天早上6�/span>
0 6 * * *
每两个小�/span>
0 */2 * * *
晚上11点到早上7点之间每两个ž®æ—¶åQŒæ—©ä¸Šå…«ç‚?/span>
0 23-7/2
åQ?/span>8 * * *
每个月的4号和每个½C¼æ‹œçš„礼拜一到礼拜三的早ä¸?/span>11ç‚?/span>
0 11 4 * 1-3
1�/span>1日早�/span>4�/span>
0 4 1 1 *

quartz的高¾U§ç‰¹æ€§ä¸ä»…如æ­?/span>
1
数据库存�/span>
2
集群支持
3
数据库持久化ä»ÕdŠ¡åQ?/span>trigger
4 trigger
的停止,˜qè¡Œ
5
ä»ÕdŠ¡çš„ä“Q意添åŠ?/span>
6
æ¯?/span>corntrigger 更详ž®½çš„ä»ÕdŠ¡å®‰æŽ’
7
¾U¿ç¨‹çš„内部数据交æ?/span>



Crying 2008-03-16 18:31 发表评论
]]>
Spring的事务管ç?http://www.aygfsteel.com/Crying/articles/158555.htmlCryingCryingTue, 06 Nov 2007 06:56:00 GMThttp://www.aygfsteel.com/Crying/articles/158555.htmlhttp://www.aygfsteel.com/Crying/comments/158555.htmlhttp://www.aygfsteel.com/Crying/articles/158555.html#Feedback0http://www.aygfsteel.com/Crying/comments/commentRss/158555.htmlhttp://www.aygfsteel.com/Crying/services/trackbacks/158555.html转脓çš?地址忘记äº?对不起啊åQ?br />

Spring的事务管理是¾lå¸¸ç”¨åˆ°çš„,论坛里已¾lä¸çŸ¥è®¨è®ÞZº†å¤šå°‘变了ã€?
记录下几个讲的比较清楚的�/p>

spring事务探烦
http://www.javaeye.com/topic/11190

解惑 spring 嵌套事务
http://www.javaeye.com/topic/35907?page=1

Spring声明式事务管理源码解�
http://www.javaeye.com/topic/87426?page=1

详解spring事务属�
http://www.javaeye.com/post/282638

附:事务的概�/p>

一.原子性(AtomicåQ?/span>
事务ç”׃¸€ä¸ªæˆ–å¤šä¸ªè¡ŒäØ“¾l„成åQŒåŞ成一个工作单元。原子性确保在˜q™ä¸ªå·¥ä½œå•元中的所有操作要么都发生åQŒè¦ä¹ˆéƒ½ä¸å‘生。ä“Q何一个行为失败,整个事务ž®±å›žæ»šã€?/p>

äº?一致性(ConsistentåQ?/span>
一旦一个事务结束了åQŒä¸½Ž¡æˆåŠŸä¸Žå¦ï¼Œ¾pȝ»Ÿæ‰€å¤„çŠ¶æ€å’Œå®ƒçš„ä¹ŸäØ“è§„åˆ™æ˜¯ä¸€è‡´çš„åQŒå°±æ•°æ®åº”当不会被破坏ã€?/p>

ä¸?隔离性(IsolatedåQ?/span>
事务应该允许多个用户操作同一个数据,但用户之间不会互相媄响。因此,事务必须是隔¼›Èš„åQŒé˜²æ­¢åƈ发读写同一个数据的情况发生ã€?/p>

å›?持久性(DurableåQ?/span>
一旦事务成功完成,事务的结果就应该被持久化下来�



Crying 2007-11-06 14:56 发表评论
]]>
AOP观念åQˆè{载)http://www.aygfsteel.com/Crying/articles/144951.htmlCryingCryingThu, 13 Sep 2007 11:33:00 GMThttp://www.aygfsteel.com/Crying/articles/144951.htmlhttp://www.aygfsteel.com/Crying/comments/144951.htmlhttp://www.aygfsteel.com/Crying/articles/144951.html#Feedback2http://www.aygfsteel.com/Crying/comments/commentRss/144951.htmlhttp://www.aygfsteel.com/Crying/services/trackbacks/144951.htmlAOP全名ä¸?/span>Aspect-Oriented ProgrammingåQŒæœ‰å…³äºŽAOP的许多名词术语都˜q‡äºŽæŠ½è±¡åQŒå•从字面上òq¶ä¸å®ÒŽ˜“理解其名词意义,˜q™è¾¹ž®†ä»¥ä¹‹å‰ä»‹ç»ä»£ç†æœºåˆ¶çš„范例来逐一对照以介¾l?/span>AOP的术语与观念åQ?/span>

  • <!--[if !supportLists]-->Cross-cutting concern

åœ?/span>DynamicProxyDemo™å¹ç›®çš„例子中åQŒè®°å½•的动作原先被横切(Cross-cuttingåQ‰å…¥è‡?/span>HelloSpeaker本èín所负责的业务流½E‹ä¹‹ä¸­ï¼Œå¦å¤–¾cÖM¼¼äºŽè®°å½•è¿™¾cȝš„动作åQŒå¦‚安全åQ?/span>SecurityåQ‰æ£€æŸ¥ã€äº‹åŠ¡ï¼ˆTransactionåQ‰ç­‰¾pȝ»Ÿå±‚面的服务(ServiceåQ‰ï¼Œåœ¨ä¸€äº›åº”用程序之中常被见到安插至各个对象的处理流½E‹ä¹‹ä¸­ï¼Œ˜q™äº›åŠ¨ä½œåœ?/span>AOPçš„æœ¯è¯­ä¸­è¢«ç§°ä¹‹äØ“Cross-cutting concernsã€?/span>
 

ä»¥å›¾ç‰‡è¯´æ˜Žå¯å¼ø™°ƒå‡?/span>Cross-cutting concerns的意涵,例如原来的业务流½E‹æ˜¯å¾ˆå•¾U¯çš„åQ?/span>



现在ä¸ÞZº†è¦åŠ å…¥è®°å½•ï¼ˆLoggingåQ‰ä¸Žå®‰å…¨åQ?/span>SecurityåQ‰æ£€æŸ¥ç­‰æœåŠ¡åQŒå¯¹è±¡çš„½E‹åºä»£ç ä¸­è‹¥è¢«ç¡¬ç”Ÿç”Ÿçš„写入相关的Loggingã€?/span>Security½E‹åºç‰‡æ®µåQŒåˆ™å¯ä‹É用以下图解表½Cºå‡ºCross-cuttingä¸?/span>Cross-cutting concerns的概念:



Cross-cutting concerns若直接撰写在负责某业务的对象之流½E‹ä¸­åQŒä¼šä½¿å¾—¾l´æŠ¤½E‹åºçš„æˆæœ¬å¢žé«˜ï¼Œä¾‹å¦‚若您今天要将对象中的记录功能修改或是¿U»é™¤è¯¥æœåŠ¡ï¼Œåˆ™å¿…™åÖM¿®æ”ÒŽ‰€æœ‰æ’°å†™æ›¾è®°å½•服务的程序代码,然后重新¾~–译åQŒå¦ä¸€æ–šw¢åQ?/span>Cross-cutting concernsæ·äh‚于业务逻辑之中åQŒä‹É得业务对象本íw«çš„é€»è¾‘æˆ–ç¨‹åºçš„æ’°å†™æ›´äØ“å¤æ‚ã€?/span>

  •   <!--[endif]-->Aspect

ž®†æ•£è½äºŽå„个业务对象之中çš?/span>Cross-cutting concerns攉™›†èµäh¥åQŒè®¾è®¡å„个独立可重用的对象,˜q™äº›å¯¹è±¡¿UîC¹‹ä¸?/span>AspectåQŒä¾‹å¦‚在DynamicProxyDemo™å¹ç›®ä¸­å°†ç™Õd½•çš„åŠ¨ä½œè®¾è®¡äØ“ä¸€ä¸?/span>LogHandler¾cÕdˆ«åQ?/span>LogHandler¾cÕdˆ«åœ?/span>AOP的术语就æ˜?/span>Aspect的一个具体实例,åœ?/span>AOP中着重于Aspectçš„èöL认,ž®†ä¹‹ä»Žä¸šåŠ¡æµ½E‹ä¸­ç‹¬ç«‹å‡ºæ¥åQŒåœ¨éœ€è¦è¯¥æœåŠ¡çš„æ—¶å€™ï¼Œ¾~åˆåQ?/strong>WeaveåQ?/span>臛_º”用程序之上,不需要服务的时候,也可以马上从应用½E‹åºä¸­è„±¼›»ï¼Œåº”用½E‹åºä¸­çš„可重用组件不用作ä»ÖM½•的修改,例如åœ?/span>DynamicProxyDemo™å¹ç›®ä¸­çš„HelloSpeaker所代表的角色就是应用程序中可重用的¾l„äšgåQŒåœ¨å®ƒéœ€è¦è®°å½•服务时òq¶ä¸ç”¨ä¿®æ”ÒŽœ¬íw«çš„½E‹åºä»£ç ã€?/span>

另一斚w¢åQŒå¯¹äºŽåº”用程序中可重用的¾l„äšg来说åQŒä»¥AOP的设计方式,它不用知道处理提供服务的对象之存在,具体的说åQŒä¸ŽæœåŠ¡ç›¸å…³çš?/span>API不会出现在可重用的应用程序组件之中,因而可提高˜q™äº›¾l„äšg的重用性,您可以将˜q™äº›¾l„äšg应用臛_…¶å®ƒçš„应用½E‹åºä¹‹ä¸­åQŒè€Œä¸ä¼šå› ä¸ºç›®å‰åŠ å…¥äº†æŸäº›æœåŠ¡è€Œä¸Žç›®å‰çš„åº”ç”¨ç¨‹åºæ¡†æž¶å‘ç”Ÿè€¦åˆã€?/span>

  • <!--[if !supportLists]-->Advice

Aspectçš„å…·ä½“å®žä½œç§°ä¹‹äØ“AdviceåQŒä»¥è®°å½•的动作而言åQ?/span>Advice中会包括真正的记录程序代码是如何实作的,像是DynamicProxyDemo™å¹ç›®ä¸­çš„LogHandler¾cÕdˆ«ž®±æ˜¯Advice的一个具体实例,Advice中包括了Cross-cutting concerns的行为或所要提供的服务ã€?/span> 

  • <!--[if !supportLists]-->Joinpoint

Aspect在应用程序执行时加入业务‹¹ç¨‹çš„ç‚¹æˆ–æ—¶æœºç§°ä¹‹äØ“JoinpointåQŒå…·ä½“来è¯ß_¼Œž®±æ˜¯Advice在应用程序中被呼叫执行的时机åQŒè¿™ä¸ªæ—¶æœºå¯èƒ½æ˜¯æŸä¸ªæ–ÒŽ³•被呼叫之前或之后åQˆæˆ–两者都有)åQŒæˆ–是某个例外发生的时候ã€?/span>

  • <!--[if !supportLists]--><!--[endif]-->Pointcut

Pointcut是一个定义,藉由˜q™ä¸ªå®šä¹‰æ‚¨å¯ä»¥æŒ‡å®šæŸä¸?/span>Aspect在哪äº?/span>Joinpoint时被应用臛_º”用程序之上。具体的è¯ß_¼Œæ‚¨å¯ä»¥åœ¨æŸä¸ªå®šä¹‰æ¡£ä¸­æ’°å†™PointcutåQŒå½“中说明了哪些Aspect要应用至应用½E‹åºä¸­çš„哪些Joinpointã€?/span> 

  • <!--[if !supportLists]-->Target

一ä¸?/span>Advice被应用的对象或目标对象,例如DynamicProxyDemo™å¹ç›®ä¸­çš„HelloSpeakerž®±æ˜¯LogHandler˜q™ä¸ªAdviceçš?/span>Targetã€?/span>

  • <!--[if !supportLists]--><!--[endif]-->Introduction

对于一个现存的¾cÕdˆ«åQ?/span>Introductionå¯ä»¥ä¸ºå…¶å¢žåŠ è¡ŒäØ“åQŒè€Œä¸ç”¨ä¿®æ”¹è¯¥¾cÕdˆ«çš„程序,具体的说åQŒæ‚¨å¯ä»¥ä¸ºæŸä¸ªå·²æ’°å†™ã€ç¼–译完成的¾cÕdˆ«åQŒåœ¨æ‰§è¡Œæ—¶æœŸåŠ¨æ€åŠ å…¥ä¸€äº›æ–¹æ³•æˆ–è¡ŒäØ“åQŒè€Œä¸ç”¨ä¿®æ”ÒŽˆ–新增ä»ÖM½•一行程序代码ã€?/span>

  • <!--[if !supportLists]--><!--[endif]-->Proxy

åœ?strong>ã€?/strong>Expert One-on-One J2EE Development WIthout EJBã€?/span>一书中åQ?/span>Rod Johnsonã€?/span>Juergen Hoeller在第八章中有提到åQ?/span>AOP的实作有五个主要的策略:Dynamic Proxiesã€?/span>Dynamic Byte Code Generationã€?/span>Java Code Generationã€?/span>Use of a Custon Class Loaderã€?/span>Language Extensionsã€?/span>

在之前静态代理与动态代理中åQŒå·²¾lä‹É用实际的½E‹åºèŒƒä¾‹ä»‹ç»˜q‡ä»£ç†æœºåˆ¶çš„实现åQ?/span>Springçš?/span>AOP主要是透过动态代理来完成ã€?/span>

  • <!--[if !supportLists]-->Weave

Advice被应用至对象之上的过½E‹ç§°ä¹‹äØ“¾~åˆåQ?/span>WeaveåQ‰ï¼Œåœ?/span>AOP中缝合的方式有几个时间点åQšç¼–译时期(Compile timeåQ‰ã€ç±»åˆ«åŠ è½½æ—¶æœŸï¼ˆClassload timeåQ‰ã€æ‰§è¡Œæ—¶æœŸï¼ˆRuntimeåQ‰ã€?/span>
 

¾l“合DynamicProxyDemo的实例,ž®†ä»¥ä¸Šä»‹¾lè¿‡çš?/span>AOP相关名词具体的ä‹É用图片来加以表示åQŒæœ‰åŠ©äºŽæ‚¨å¯¹æ¯ä¸€ä¸ªåè¯çš„ç†è§£ä¸Žè®¤è¯†ï¼š



]]>
使用Springé‚®äšg抽象层发送简单邮ä»?转http://www.aygfsteel.com/shmily432685/archive/2005/12/30/26041.html)http://www.aygfsteel.com/Crying/articles/142701.htmlCryingCryingTue, 04 Sep 2007 09:35:00 GMThttp://www.aygfsteel.com/Crying/articles/142701.htmlhttp://www.aygfsteel.com/Crying/comments/142701.htmlhttp://www.aygfsteel.com/Crying/articles/142701.html#Feedback1http://www.aygfsteel.com/Crying/comments/commentRss/142701.htmlhttp://www.aygfsteel.com/Crying/services/trackbacks/142701.html 1、我们定义一个发送邮件的接口:OrderManager.java
1 public interface OrderManager extends BaseManager{
2 /**
3 *email,要发送的邮äšg地址;
4 *Code:‹È€‹zȝ 
5 */
6      public void placeOrder(String email);
7 }

2、我们需要对该接口进行实现的æ–ÒŽ³•:OrderManagerImpl.java

 1 import javax.mail.Message;
 2 import javax.mail.MessagingException;
 3 import javax.mail.internet.InternetAddress;
 4 import javax.mail.internet.MimeMessage;
 5 import org.springframework.mail.MailException;
 6 import org.springframework.mail.javamail.JavaMailSender;
 7 import org.springframework.mail.javamail.MimeMessagePreparator;
 8 import service.OrderManager;
 9  
11 public class OrderManagerImpl extends BaseManagerImpl implements OrderManager {
12 
13 private JavaMailSender mailsender;
14 private MyMailMessage message;
15 
16 
17     public void setMessage(CityMailMessage message)
18     {
19         this.message = message;
20     }
21     public void setMailsender(JavaMailSender mailsender) {
22         this.mailsender = mailsender;
23     }
24     public void placeOrder(final String email) {
25         
26 
27         MimeMessagePreparator preparator = new MimeMessagePreparator() {
28             public void prepare(MimeMessage mimeMessage) throws MessagingException {
29                 mimeMessage.setRecipient(Message.RecipientType.TO, 
30                         new InternetAddress(email));
31                 mimeMessage.setFrom(new InternetAddress(message.getFrom()));
32                 /**转换¾~–码为GBK*/
33                 mimeMessage.setSubject(message.getSubject(),"GBK");
36                 mimeMessage.setText(email+"<br>"+message.getSubject()+message.getText(),"GBK");
37                 
38             }
39         };
40         try{
41             mailsender.send(preparator);
42         }
43         catch(MailException ex) {
44             //log it and go on
45             System.err.println(ex.getMessage());            
46         }
47     }
48 }

3、spring配置发送email的applicationContext-email.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
 3     "http://www.springframework.org/dtd/spring-beans.dtd">
 4 
 5 <beans>
 6     <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
 7         <property name="host">
 8             <value>smtp.163.com</value>
 9         </property>
10         <property name="username">
11             <value>username</value>
12         </property>
13         <property name="password">
14             <value>password</value>
15         </property>
16         <property name="javaMailProperties">
17             <props>
18                 <prop key="mail.smtp.auth">true</prop>
19                 <prop key="mail.smtp.timeout">25000</prop>
20             </props>
21         </property>
22     </bean>
23 
24     <bean id="mailMessage" class="org.springframework.mail.SimpleMailMessage">
25         <property name="from">
26             <value>Email</value>
27         </property>
28         <property name="subject">
29             <value>标题</value>
30         </property>
31         <property name="text">
32             <value>内容</value>
33         </property>
46     </bean>
47 
48     <bean id="orderManager" class="cn.cityyouth.service.impl.OrderManagerImpl">
49         <property name="mailsender">
50             <ref bean="mailSender" />
51         </property>
52         <property name="message">
53             <ref bean="mailMessage" />
54         </property>
55     </bean>
56 
57 </beans>

4、最后配¾|®è‡ªå·Þqš„jsp™åµé¢ä»¥åŠaction

 1 package cn.cityyouth.web.action;
 2 
 3 import javax.servlet.http.HttpServletRequest;
 4 import javax.servlet.http.HttpServletResponse;
 5 import org.apache.struts.action.ActionForm;
 6 import org.apache.struts.action.ActionForward;
 7 import org.apache.struts.action.ActionMapping;
 8 import org.apache.struts.action.ActionMessage;
 9 import org.apache.struts.action.ActionMessages;
10 import com.test.service.OrderManager;
11 
12 public class SendMailAction extends BaseAction {
13 
14     /**
15      * Method execute
16      * 
17      * @param mapping
18      * @param form
19      * @param request
20      * @param response
21      * @return ActionForward
22      */
23     public ActionForward execute(ActionMapping mapping, ActionForm form,
24             HttpServletRequest request, HttpServletResponse response) {
25         OrderManager omi=(OrderManager)this.getBean("orderManager");
26         String useremail="123@163.com";
27          omi.placeOrder(useremail);
28        }
29 }

到此所有的开发以¾l“束ã€?br />

Sringé‚®äšg抽象层的主要包是åQšorg.springframework.mail 包。它包含叫MailSender为发送邮件的核心接口和包含简单邮件属性例如from,to,cc,subject,text叫SimpleMailMessage的值对è±? ˜q™ä¸ªåŒ…也包含一个检查异常的层次åQŒå®ƒæ”¯æŒä¸€ä¸ªæ›´é«˜çñ”别的抽象­‘…过低çñ”别的邮äšg¾pȝ»Ÿå¼‚常伴随根异常存在MailException. 请参考JavaDocs为更多的信息杂邮件异常层‹Æ¡ã€?/p>

spring in action in action also provides a sub-interface of MailSender for specialized JavaMail features such as MIME messages, namely org.springframework.mail.javamail.JavaMailSender It also provides a callback interface for preparation of JavaMail MIME messages, namely org.springframework.mail.javamail.MimeMessagePreparator

Spring也支持一个MailSender的专用于JavaMail特征例如MIME消息子接口,命名为org.springframework.javamail.JavaMailerSenerã€‚å®ƒä¹Ÿæ”¯æŒä¸€ä¸ªäØ“JavaMail MIME信息的准备回调接口,命名为org.springframework.mail.JavaMail.MimeMessagePreparator.



]]>
Spring IOChttp://www.aygfsteel.com/Crying/articles/142028.htmlCryingCryingSun, 02 Sep 2007 01:10:00 GMThttp://www.aygfsteel.com/Crying/articles/142028.htmlhttp://www.aygfsteel.com/Crying/comments/142028.htmlhttp://www.aygfsteel.com/Crying/articles/142028.html#Feedback0http://www.aygfsteel.com/Crying/comments/commentRss/142028.htmlhttp://www.aygfsteel.com/Crying/services/trackbacks/142028.html假设我们要设计一个Girl和一个Boy¾c»ï¼Œå…¶ä¸­Girl有kissæ–ÒŽ³•åQŒå³Girl惌™¦Kiss一个Boy。那么,我们的问题是åQŒGirl如何能够认识˜q™ä¸ªBoyåQ?
在我们中国,常见的MM与GG的认识方式有以下几种
1 青梅竚w©¬åQ?2 亲友介绍åQ?3 父母包办
那么哪一¿Uæ‰æ˜¯æœ€å¥½å‘¢åQ?
青梅竚w©¬åQšGirl从小ž®ÞqŸ¥é“自å·Þqš„Boyã€?
public class Girl {
void kiss(){
Boy boy = new Boy();
}
}
然而从开始就创徏的Boy¾~ºç‚¹ž®±æ˜¯æ— æ³•åœ¨æ›´æ¢ã€‚åÆˆä¸”è¦è´Ÿè´£Boy的整个生命周期。如果我们的Girl惌™¦æ¢ä¸€ä¸ªæ€Žä¹ˆåŠžï¼ŸåQˆä¸¥é‡ä¸æ”¯æŒGirl¾lå¸¸æ›´æ¢Boy,#_#åQ?
亲友介绍åQšç”±ä¸­é—´äºø™´Ÿè´£æä¾›Boy来见é?
public class Girl {
void kiss(){
Boy boy = BoyFactory.createBoy();
}
}
亲友介绍åQŒå›ºç„¶æ˜¯å¥½ã€‚如果不满意åQŒå°½½Ž¡å¦å¤–换一个好了。但是,亲友BoyFactory¾lå¸¸æ˜¯ä»¥Singletonçš„åŞ式出玎ͼŒä¸ç„¶ž®±æ˜¯åQŒå­˜åœ¨äºŽGlobalsåQŒæ— å¤„不在,无处不能。实在是太繁琐了一点,不够灉|´»ã€‚我ä¸ÞZ»€ä¹ˆä¸€å®šè¦˜q™ä¸ªäº²å‹æŽºå’Œ˜q›æ¥å‘¢ï¼Ÿä¸ÞZ»€ä¹ˆä¸€å®šè¦ä»˜ç»™å¥¹ä»‹¾lè´¹å‘¢ï¼Ÿä¸‡ä¸€æœ€å¥½çš„æœ‹å‹çˆ×ƒ¸Šäº†æˆ‘的男朋友呢?
父母包办åQšä¸€åˆ‡äº¤¾l™çˆ¶æ¯ï¼Œè‡ªå·±ä¸ç”¨è´¹å¹çîC¹‹åŠ›ï¼Œåªéœ€è¦ç­‰ç€Kissž®±å¥½äº†ã€?
public class Girl {
void kiss(Boy boy){
// kiss boy
boy.kiss();
}
}
WellåQŒè¿™æ˜¯å¯¹Girl最好的æ–ÒŽ³•åQŒåªè¦æƒ³åŠžæ³•è´¿èµ‚äº†Girl的父母,òq¶æŠŠBoy交给他。那么我们就可以è½ÀL¾çš„å’ŒGirl来Kiss了。看来几千年传统的父母之命还真是有用哦。至ž®‘Boyå’ŒGirl不用自己瞎忙乎了ã€?
˜q™å°±æ˜¯IOCåQŒå°†å¯¹è±¡çš„创建和获取提取到外部。由外部容器提供需要的¾l„äšgã€?
我们知道好莱坞原则:“Do not call us, we will call you.” 意思就是,You, girlie, do not call the boy. We will feed you a boyã€?
我们˜q˜åº”该知道依赖倒è{原则å?Dependence Inversion PrincinpleåQŒDIP
Eric Gammaè¯ß_¼Œè¦é¢å‘抽象编½E‹ã€‚面向接口编½E‹æ˜¯é¢å‘对象的核心ã€?
¾l„äšgåº”è¯¥åˆ†äØ“ä¸¤éƒ¨åˆ†ï¼Œå?Service, 所提供功能的声æ˜?Implementation, Service的实çŽ?
好处是:多实现可以ä“Q意切换,防止 “everything depends on everything” 问题åQŽå³å…·ä½“依赖于具体ã€?
所以,我们的Boy应该是实现Kissable接口。这样一旦Girl不想kiss可恶的Boy的话åQŒè¿˜å¯ä»¥kiss可爱的kitten和慈¼œ¥çš„grandmotherã€?


]]>
Spring½Ž€ä»?/title><link>http://www.aygfsteel.com/Crying/articles/142027.html</link><dc:creator>Crying</dc:creator><author>Crying</author><pubDate>Sun, 02 Sep 2007 01:08:00 GMT</pubDate><guid>http://www.aygfsteel.com/Crying/articles/142027.html</guid><wfw:comment>http://www.aygfsteel.com/Crying/comments/142027.html</wfw:comment><comments>http://www.aygfsteel.com/Crying/articles/142027.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Crying/comments/commentRss/142027.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Crying/services/trackbacks/142027.html</trackback:ping><description><![CDATA[    <div><font size="3">Spring 框架</font> </div> <div><font size="3">Spring 框架是一个分层架构,ç”?7 个定义良好的模块¾l„成。Spring 模块构徏在核心容器之上,核心容器定义了创建、配¾|®å’Œ½Ž¡ç† bean 的方式,如图 1 所½Cºã€?/font> </div> <div>­</div> <div><strong><font size="3">å›?1. Spring 框架çš?7 个模å?/font></strong> </div> <div><font size="3"><img height="288" src="http://www.ibm.com/developerworks/cn/java/wa-spring1/spring_framework.gif" width="555" border="0" alt="" /> </div> <div></font></div> <div><font size="3">¾l„成 Spring 框架的每个模块(或组ä»Óž¼‰éƒ½å¯ä»¥å•独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下åQ?</font><font size="3"></font></div> <div><font size="3"><strong>核心容器</strong>åQšæ ¸å¿ƒå®¹å™¨æä¾?Spring 框架的基本功能。核心容器的主要¾l„äšgæ˜?BeanFactoryåQŒå®ƒæ˜¯å·¥åŽ‚æ¨¡å¼çš„å®žçŽ°ã€‚BeanFactory 使用<em>控制反è{</em> åQˆIOCåQ?模式ž®†åº”用程序的配置和依赖性规范与实际的应用程序代码分开ã€?</font></div> <div><font size="3"></font></div> <div><font size="3"><strong>Spring 上下æ–?/strong>åQšSpring 上下文是一个配¾|®æ–‡ä»Óž¼Œå?Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能ã€?</font></div> <div><font size="3"></font></div> <div><font size="3"><strong>Spring AOP</strong>åQšé€šè¿‡é…ç½®½Ž¡ç†ç‰ÒŽ€§ï¼ŒSpring AOP 模块直接ž®†é¢å‘方面的¾~–程功能集成åˆîCº† Spring 框架中。所以,可以很容易地ä½?Spring 框架½Ž¡ç†çš„ä“Q何对象支æŒ?AOP。Spring AOP 模块为基äº?Spring 的应用程序中的对象提供了事务½Ž¡ç†æœåŠ¡ã€‚é€šè¿‡ä½¿ç”¨ Spring AOPåQŒä¸ç”¨ä¾èµ?EJB ¾l„äšgåQŒå°±å¯ä»¥ž®†å£°æ˜Žæ€§äº‹åŠ¡ç®¡ç†é›†æˆåˆ°åº”ç”¨½E‹åºä¸­ã€?</font></div> <div><font size="3"></font></div> <div><font size="3"><strong>Spring DAO</strong>åQšJDBC DAO 抽象层提供了有意义的异常层次¾l“æž„åQŒå¯ç”¨è¯¥¾l“构来管理异常处理和不同数据库供应商抛出的错误消息。异常层‹Æ¡ç»“构简化了错误处理åQŒåƈ且极大地降低了需要编写的异常代码数量åQˆä¾‹å¦‚打开和关闭连接)。Spring DAO 的面å?JDBC 的异帔Rµä»Žé€šç”¨çš?DAO 异常层次¾l“æž„ã€?</font></div> <div><font size="3"></font></div> <div><font size="3"><strong>Spring ORM</strong>åQšSpring 框架插入了若òq²ä¸ª ORM 框架åQŒä»Žè€Œæä¾›äº† ORM 的对象关¾pÕd·¥å…øP¼Œå…¶ä¸­åŒ…括 JDO、Hibernate å’?iBatis SQL Map。所有这些都遵从 Spring 的通用事务å’?DAO 异常层次¾l“æž„ã€?</font></div> <div><font size="3"></font></div> <div><font size="3"><strong>Spring Web 模块</strong>åQšWeb 上下文模块徏立在应用½E‹åºä¸Šä¸‹æ–‡æ¨¡å—之上,为基äº?Web 的应用程序提供了上下文。所以,Spring 框架支持ä¸?Jakarta Struts 的集成。Web 模块˜q˜ç®€åŒ–了处理多部分请求以及将è¯äh±‚参数¾l‘定到域对象的工作ã€?</font></div> <div><font size="3"></font></div> <div><font size="3"><strong>Spring MVC 框架</strong>åQšMVC 框架是一个全功能的构å»?Web 应用½E‹åºçš?MVC 实现。通过½{–略接口åQŒMVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText å’?POIã€?</font></div> <div>­</div> <div><font size="3">Spring 框架的功能可以用在ä“Qä½?J2EE 服务器中åQŒå¤§å¤šæ•°åŠŸèƒ½ä¹Ÿé€‚ç”¨äºŽä¸å—ç®¡ç†çš„çŽ¯å¢ƒã€‚Spring 的核心要ç‚ÒŽ˜¯åQšæ”¯æŒä¸¾l‘定到特å®?J2EE 服务的可重用业务和数据访问对象。毫无疑问,˜q™æ ·çš„对象可以在不同 J2EE 环境 åQˆWeb æˆ?EJBåQ‰ã€ç‹¬ç«‹åº”用程序、测试环境之间重用ã€?</font></div> <div>­</div> <div><img src="http://www.ibm.com/i/v14/rules/blue_rule.gif" border="0" alt="" /> </div> <div><img height="6" src="http://www.ibm.com/i/c.gif" width="8" border="0" alt="" /> </div> <div>­</div> <div>­</div> <div><font size="3">IOC å’?AOP</font> </div> <div><font size="3">控制反è{模式åQˆä¹Ÿ¿UîC½œä¾èµ–性介入)的基本概忉|˜¯åQšä¸åˆ›å¾å¯¹è±¡åQŒä½†æ˜¯æ˜q°åˆ›å»ºå®ƒä»¬çš„æ–¹å¼ã€‚在代码中不直接与对象和服务˜qžæŽ¥åQŒä½†åœ¨é…¾|®æ–‡ä»¶ä¸­æè¿°å“ªä¸€ä¸ªç»„仉™œ€è¦å“ªä¸€™åÒŽœåŠ¡ã€‚å®¹å™?åQˆåœ¨ Spring 框架中是 IOC 容器åQ?è´Ÿè´£ž®†è¿™äº›è”¾pÕdœ¨ä¸€èµ—÷€?/font> </div> <div><font size="3">在典型的 IOC 场景中,容器创徏了所有对象,òq¶è®¾¾|®å¿…要的属性将它们˜qžæŽ¥åœ¨ä¸€èµøP¼Œå†›_®šä»€ä¹ˆæ—¶é—´è°ƒç”¨æ–¹æ³•。下表列å‡ÞZº† IOC 的一个实现模式ã€?/font> </div> <div>¾cÕdž‹ 1服务需要实çŽîC¸“门的接口åQŒé€šè¿‡æŽ¥å£åQŒç”±å¯¹è±¡æä¾›˜q™äº›æœåŠ¡åQŒå¯ä»¥ä»Žå¯¹è±¡æŸ¥è¯¢ä¾èµ–性(例如åQŒéœ€è¦çš„附加服务åQ‰ç±»åž?2通过 JavaBean 的属性(例如 setter æ–ÒŽ³•åQ‰åˆ†é…ä¾èµ–性类åž?3依赖性以构造函数的形式提供åQŒä¸ä»?JavaBean 属性的形式公开 </div> <div><font size="3">Spring 框架çš?IOC 容器采用¾cÕdž‹ 2 和类åž? 实现ã€?/font> </div> <div><strong><font size="3">面向斚w¢çš„ç¼–½E?/font></strong> </div> <div><font size="3"><em>面向斚w¢çš„ç¼–½E?/em>åQŒå³ AOPåQŒæ˜¯ä¸€¿Uç¼–½E‹æŠ€æœ¯ï¼Œå®ƒå…è®¸ç¨‹åºå‘˜å¯Òލªåˆ‡å…³æ³¨ç‚¹æˆ–横切典型的职责分界¾U¿çš„è¡ŒäØ“åQˆä¾‹å¦‚日志和事务½Ž¡ç†åQ‰è¿›è¡Œæ¨¡å—化。AOP 的核心构造是<em>æ–šw¢</em>åQŒå®ƒž®†é‚£äº›åª„响多个类的行为封装到可重用的模块中ã€?/font> </div> <div><font size="3">AOP å’?IOC 是补充性的技术,它们都运用模块化方式解决企业应用½E‹åºå¼€å‘中的复杂问题。在典型的面向对象开发方式中åQŒå¯èƒ½è¦ž®†æ—¥å¿—记录语句放在所有方法和 Java ¾cÖM¸­æ‰èƒ½å®žçŽ°æ—¥å¿—åŠŸèƒ½ã€‚åœ¨ AOP 方式中,可以反过来将日志服务<em>模块åŒ?/em>åQŒåƈ以声明的方式ž®†å®ƒä»¬åº”用到需要日志的¾l„äšg上。当ç„Óž¼Œä¼˜åŠ¿ž®±æ˜¯ Java ¾cÖM¸éœ€è¦çŸ¥é“日志服务的存在åQŒä¹Ÿä¸éœ€è¦è€ƒè™‘相关的代码。所以,ç”?Spring AOP ¾~–写的应用程序代码是松散耦合的ã€?/font> </div> <div><font size="3">AOP 的功能完全集成到äº?Spring 事务½Ž¡ç†ã€æ—¥å¿—和其他各种ç‰ÒŽ€§çš„上下文中ã€?/font> </div> <div><font size="3">IOC 容器</font> </div> <div><font size="3">Spring 设计的核心是 org.springframework.beans 包,它的设计目标是与 JavaBean ¾l„äšg一起ä‹É用。这个包通常不是ç”Þq”¨æˆïL›´æŽ¥ä‹É用,而是由服务器ž®†å…¶ç”¨ä½œå…¶ä»–多数功能的底层中介。下一个最高çñ”抽象æ˜?BeanFactory 接口åQŒå®ƒæ˜¯å·¥åŽ‚è®¾è®¡æ¨¡å¼çš„å®žçŽ°åQŒå…è®”R€šè¿‡åç§°åˆ›å¾å’Œæ£€ç´¢å¯¹è±¡ã€‚BeanFactory 也可以管理对象之间的关系ã€?/font> </div> <div><font size="3">BeanFactory 支持两个对象模型ã€?/font> </div> <div><font size="3"><strong>单æ€?/strong> 模型提供了具有特定名¿U°çš„对象的共享实例,可以在查询时对其˜q›è¡Œ‹‚€ç´¢ã€‚Singleton 是默认的也是最常用的对象模型。对于无状态服务对象很理想ã€?</font><font size="3"><strong>原型</strong> 模型¼‹®ä¿æ¯æ¬¡‹‚€ç´¢éƒ½ä¼šåˆ›å»ºå•独的对象。在每个用户都需要自å·Þqš„对象æ—Óž¼ŒåŽŸåž‹æ¨¡åž‹æœ€é€‚åˆã€?</font><font size="3">bean 工厂的概忉|˜¯ Spring ä½œäØ“ IOC 容器的基¼‹€ã€‚IOC ž®†å¤„理事情的责ä“Q从应用程序代码è{¿UÕdˆ°æ¡†æž¶ã€‚正如我ž®†åœ¨ä¸‹ä¸€ä¸ªç¤ºä¾‹ä¸­æ¼”ç¤ºçš„é‚£æ øP¼ŒSpring 框架使用 JavaBean 属性和配置数据来指出必™å»è®¾¾|®çš„依赖关系ã€?/font> </div> <div><font size="3"></div> <div></font>  </div> <img src ="http://www.aygfsteel.com/Crying/aggbug/142027.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Crying/" target="_blank">Crying</a> 2007-09-02 09:08 <a href="http://www.aygfsteel.com/Crying/articles/142027.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> Ö÷Õ¾Ö©Öë³ØÄ£°å£º <a href="http://" target="_blank">ËÄ×ÓÍõÆì</a>| <a href="http://" target="_blank">ͼƬ</a>| <a href="http://" target="_blank">°¢Í¼Ê²ÊÐ</a>| <a href="http://" target="_blank">ËÄ´¨Ê¡</a>| <a href="http://" target="_blank">ÄϲýÊÐ</a>| <a href="http://" target="_blank">´ó»¯</a>| <a href="http://" target="_blank">Ñô¸ßÏØ</a>| <a href="http://" target="_blank">¼Î¶¨Çø</a>| <a href="http://" target="_blank">´ó¶É¿ÚÇø</a>| <a href="http://" target="_blank">̨ÄÏÊÐ</a>| <a href="http://" target="_blank">ÁÉÄþÊ¡</a>| <a href="http://" target="_blank">ÐÂÒÊÊÐ</a>| <a href="http://" target="_blank">½¨ê±ÊÐ</a>| <a href="http://" target="_blank">°²¼ªÏØ</a>| <a href="http://" target="_blank">аͶû»¢×óÆì</a>| <a href="http://" target="_blank">ÎÞ¼«ÏØ</a>| <a href="http://" target="_blank">Т²ýÏØ</a>| <a href="http://" target="_blank">Ѱµé</a>| <a href="http://" target="_blank">ººÔ´ÏØ</a>| <a href="http://" target="_blank">²©°×ÏØ</a>| <a href="http://" target="_blank">ͬÈÊÏØ</a>| <a href="http://" target="_blank">ÁÙÒÊÊÐ</a>| <a href="http://" target="_blank">²ýÀèÏØ</a>| <a href="http://" target="_blank">DZ½­ÊÐ</a>| <a href="http://" target="_blank">Î÷ÎÚÖéÄÂÇ߯ì</a>| <a href="http://" target="_blank">¶«ÎÚ</a>| <a href="http://" target="_blank">áÓãôÏØ</a>| <a href="http://" target="_blank">ÕÑͨÊÐ</a>| <a href="http://" target="_blank">Íß·¿µêÊÐ</a>| <a href="http://" target="_blank">ÖÜÖÁÏØ</a>| <a href="http://" target="_blank">±±ÄþÊÐ</a>| <a href="http://" target="_blank">ÄÚ½­ÊÐ</a>| <a href="http://" target="_blank">Í»ÈªÏØ</a>| <a href="http://" target="_blank">ÎäѨÊÐ</a>| <a href="http://" target="_blank">¼ªÊ×ÊÐ</a>| <a href="http://" target="_blank">óÞÁ¬ÏØ</a>| <a href="http://" target="_blank">ÓÀÄþÏØ</a>| <a href="http://" target="_blank">¶õ¶û¶à˹ÊÐ</a>| <a href="http://" target="_blank">¶¼ÔÈÊÐ</a>| <a href="http://" target="_blank">ͬÈÊÏØ</a>| <a href="http://" target="_blank">Èø¸ÂÏØ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>