??xml version="1.0" encoding="utf-8" standalone="yes"?>91精品国产综合久久久久久豆腐 ,www.爱久久,高清一区二区三区四区五区http://www.aygfsteel.com/Steven-bot/category/49761.html眼睛能装下世界,Z却装不下眼泪? 一只风{一辈子只ؓ一根线冒险? 那不是一场游戏,ZL一根线늝心怀Q隐隐作| 那不是一D邂逅,Z飘在桥上的媄子,ȝq梦乡? 那不是一个梦境,Z你的温柔U语QL不经意的响vQ?/description>zh-cnWed, 01 Feb 2012 22:54:18 GMTWed, 01 Feb 2012 22:54:18 GMT60Spring定时器的两种实现方式http://www.aygfsteel.com/Steven-bot/articles/363924.htmlSteven_botSteven_botWed, 16 Nov 2011 01:57:00 GMThttp://www.aygfsteel.com/Steven-bot/articles/363924.htmlhttp://www.aygfsteel.com/Steven-bot/comments/363924.htmlhttp://www.aygfsteel.com/Steven-bot/articles/363924.html#Feedback0http://www.aygfsteel.com/Steven-bot/comments/commentRss/363924.htmlhttp://www.aygfsteel.com/Steven-bot/services/trackbacks/363924.html阅读全文

Steven_bot 2011-11-16 09:57 发表评论
]]>
spring提供了filed的值注入和method的返回值注?/title><link>http://www.aygfsteel.com/Steven-bot/articles/363827.html</link><dc:creator>Steven_bot</dc:creator><author>Steven_bot</author><pubDate>Tue, 15 Nov 2011 06:04:00 GMT</pubDate><guid>http://www.aygfsteel.com/Steven-bot/articles/363827.html</guid><wfw:comment>http://www.aygfsteel.com/Steven-bot/comments/363827.html</wfw:comment><comments>http://www.aygfsteel.com/Steven-bot/articles/363827.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Steven-bot/comments/commentRss/363827.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Steven-bot/services/trackbacks/363827.html</trackback:ping><description><![CDATA[<div><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; background-color: #ffffff; color: red; ">spring提供了filed的值注入和method的返回值注入?nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">1、Field值的注入 </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">filed值注入需要用org.springframework.beans.factory.config.FieldRetrievingFactoryBean来获取类的静态变量?nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">例如Q我们通常在接口中定义帔RQ?nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">view plaincopy to clipboardprint?package com.baobaotao.fb;  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">public interface CarBrandType {  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">    String HONG_QI = "U旗";  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">    String JI_LI = "吉利";  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">}  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">package com.baobaotao.fb; </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">public interface CarBrandType { </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">    String HONG_QI = "U旗"; </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">    String JI_LI = "吉利"; </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">} </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">下面利用FieldRetrievingFactoryBean获取CarBandType接口中定义的帔RQƈ注入到某个bean的属性中Q?nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">view plaincopy to clipboardprint?<bean id="car" class="com.baobaotao.fb.Car">  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">    <property name="brand" ref="hongQi"/>  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; "></bean>  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; "><bean id="hongQi" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean"  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">    <property name="staticField" value="com.baobaotao.fb.CarBrandType.HONG_QI"/>  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; "></bean>  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; "><bean id="car" class="com.baobaotao.fb.Car"> </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">    <property name="brand" ref="hongQi"/> </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; "></bean> </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; "><bean id="hongQi" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean" </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">    <property name="staticField" value="com.baobaotao.fb.CarBrandType.HONG_QI"/> </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; "></bean> </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">Springq允许用L帔R的全限定名作为FieldRetrievingFactoryBean的idQ其效果和通过配置staticField属性是一LQ?nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">view plaincopy to clipboardprint?<bean id="car" class="com.baobaotao.fb.Car">  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">    <property name="brand" ref="com.baobaotao.fb.CarBrandType.HONG_QI"/>  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; "></bean>  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; "><bean id="com.baobaotao.fb.CarBrandType.HONG_QI" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean" />  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; "><bean id="car" class="com.baobaotao.fb.Car"> </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">    <property name="brand" ref="com.baobaotao.fb.CarBrandType.HONG_QI"/> </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; "></bean> </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; "><bean id="com.baobaotao.fb.CarBrandType.HONG_QI" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean" /> </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">当然Q也可以直接FieldRetrievingFactoryBean以内|bean的方式对brand属性进行赋|q样在配|上更紧凑一些: </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">view plaincopy to clipboardprint?<bean id="car" class="com.baobaotao.fb.Car">  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">    <property name="brand">  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">        <bean id="com.baobaotao.fb.CarBrandType.HONG_QI" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean">  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">        </bean>  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">    </property>  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; "></bean>  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; "><bean id="car" class="com.baobaotao.fb.Car"> </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">    <property name="brand"> </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">        <bean id="com.baobaotao.fb.CarBrandType.HONG_QI" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean"> </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">        </bean> </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">    </property> </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; "></bean> </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">2、Methodq回值的注入 </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">Methodq回值的注入需要用MethodInvokingFactoryBean来完成?nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">在xml配置中,需要设定targetObject和targetMethod来指定目标bean和方法。如果用静态方法,则需要指定targetClass和targetMethod </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">配置文g如下Q?nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">view plaincopy to clipboardprint?<bean id="bdog" class="com.baobaotao.fb.Dog">  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">  <property name="age">  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">    <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">      <property name="targetObject">  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">        <ref local="randomAge"/>  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">      </property>  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">      <property name="targetMethod">  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">        <value>getAge</value>  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">      </property>  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">    </bean>  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">  </property>  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; "></bean>  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; "><bean id="randomAge" class="com.baobaotao.fd.RandomAge" />  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; "><bean id="bdog" class="com.baobaotao.fb.Dog"> </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">  <property name="age"> </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">    <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">      <property name="targetObject"> </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">        <ref local="randomAge"/> </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">      </property> </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">      <property name="targetMethod"> </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">        <value>getAge</value> </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">      </property> </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">    </bean> </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">  </property> </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; "></bean> </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; "><bean id="randomAge" class="com.baobaotao.fd.RandomAge" /> </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">对于静态方法: </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">view plaincopy to clipboardprint?<bean id="bdog" class="com.baobaotao.fb.Dog">  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">  <property name="age">  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">    <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">      <property name="targetClass">  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">        <value>com.baobaotao.fb.RandomAge</value>  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">      </property>  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">      <property name="targetMethod">  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">        <!-- getAge必须是静态方?-->  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">        <value>getAges</value>  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">      </property>  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">    </bean>  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">  </property>  </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; "></bean>  </span></div><img src ="http://www.aygfsteel.com/Steven-bot/aggbug/363827.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Steven-bot/" target="_blank">Steven_bot</a> 2011-11-15 14:04 <a href="http://www.aygfsteel.com/Steven-bot/articles/363827.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>OpenSessionInViewFilter 配置解决延迟加蝲http://www.aygfsteel.com/Steven-bot/articles/363265.htmlSteven_botSteven_botWed, 09 Nov 2011 02:16:00 GMThttp://www.aygfsteel.com/Steven-bot/articles/363265.htmlhttp://www.aygfsteel.com/Steven-bot/comments/363265.htmlhttp://www.aygfsteel.com/Steven-bot/articles/363265.html#Feedback0http://www.aygfsteel.com/Steven-bot/comments/commentRss/363265.htmlhttp://www.aygfsteel.com/Steven-bot/services/trackbacks/363265.html一、手动加?如:
Hibernate.initialize(obj.getUser());//加蝲用户对象 



二、用OpenSessionInViewFilter 配置解决延迟加蝲 如:
<!--OpenSessionInViewFilter 解决延迟加蝲问题 --> 
<filter> 
<filter-name>OpenSessionInViewFilter</filter-name> 
<filter-class> org.springframework.orm.hibernate3.support.OpenSessionInViewFilter                </filter-class> 
<!-- singleSession默认为true,若设为false则等于没用OpenSessionInView --> 
<init-param> 
<param-name>singleSession</param-name> 
<param-value>true</param-value> 
</init-param> 
</filter> 
<filter-mapping> 
<filter-name>OpenSessionInViewFilter</filter-name> 
<url-pattern>/*</url-pattern> 
</filter-mapping> 


Steven_bot 2011-11-09 10:16 发表评论
]]>
使用Spring和Quartzq行定时邮g发?http://www.aygfsteel.com/Steven-bot/articles/361336.htmlSteven_botSteven_botSat, 15 Oct 2011 01:55:00 GMThttp://www.aygfsteel.com/Steven-bot/articles/361336.htmlhttp://www.aygfsteel.com/Steven-bot/comments/361336.htmlhttp://www.aygfsteel.com/Steven-bot/articles/361336.html#Feedback0http://www.aygfsteel.com/Steven-bot/comments/commentRss/361336.htmlhttp://www.aygfsteel.com/Steven-bot/services/trackbacks/361336.html

关于Spring的邮件发送的功能演示:(下面是我自己写的一个可以发送简单邮件和附g的邮件功能,可以Ҏ邮箱后直接?? 需要用到的jar包是
? spring-context.jar
? mail-1.4.jar
? spring-core.jar
? activation.jar
? commons-logging.jar
? q些是程序必要用到的包?.BaseMailSender.javapackage com.trisun.T82A.java.mail;
import org.springframework.mail.javamail.JavaMailSender;
public abstract class BaseMailSender {
?protected String to;
?protected String from;
?protected String subject;
?protected JavaMailSendersender;//当发送MIMI消息时用到的c?public void setTo(String to) {
? this.to = to;?public void setFrom(String from) {
? this.from = from;?public void setSubject(String subject) {
? this.subject = subject;?public void setJavaMailSender(JavaMailSendersender) {
? this.sender = sender;}2.SimpleHtmlMailSender.javapackage com.trisun.T82A.java.mail;
import java.io.File;import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.javamail.MimeMessageHelper;public class SimpleHtmlMailSender extendsBaseMailSender{?public? void sendMessage()throws MessagingException {????? String textStr ="<html><head><metahttp-equiv=\"Content-Type\" content=\"text/html;charset=gb2312\"></head><body><h1><ahref='#'>^_^!</a></h1></body></html>";? //String textStr = "Helo could you see thisemail?";//发送邮件的消息M? //SimpleMailMessage msg = newSimpleMailMessage();? //当发送邮件ؓ单邮件时把此句注销卛_? MimeMessage msg =sender.createMimeMessage();
? MimeMessageHelper helper = newMimeMessageHelper(msg, true, "utf-8");? helper.setTo(to);
? helper.setFrom(from);
? helper.setSubject(subject);
?// helper.addAttachment("a.doc", newClassPathResource("/a.doc"));
? FileSystemResource file = newFileSystemResource(newFile("d:/mail/b.rar"));??? helper.addAttachment("b.rar",file);
? helper.setText(textStr, true);
? sender.send(msg);
?}?}3.SpringSendMail.javapackage com.trisun.T82A.java.mail;
import java.util.TimerTask;importorg.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.mail.javamail.JavaMailSenderImpl;?public class SpringSendMail{
????public SimpleHtmlMailSender messageSender;
?public SimpleHtmlMailSender getMessageSender(){
??return messageSender;
?}?public voidsetMessageSender(SimpleHtmlMailSender messageSender) {
??this.messageSender =messageSender;
?}?public SpringSendMail() {}? private JavaMailSenderImpl mailSender;? public JavaMailSenderImpl getMailSender(){
????return mailSender;
? }? public voidsetMailSender(JavaMailSenderImpl mailSender) {
????this.mailSender = mailSender;? public void execute() {????try{??
??????messageSender.sendMessage();
????System.out.println("发送成?);????}catch(Exception e){
?????e.printStackTrace();? }?}
4.applicationContext-mail.xml<?xml version="1.0"encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
?xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
?xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.0.xsd"
?default-lazy-init="true">?<bean id="sender"
??class="org.springframework.mail.javamail.JavaMailSenderImpl">
??<propertyname="host">
???<value>smtp服务器地址</value>
??</property>
??<propertyname="username">
???<value>user</value>
??</property>
??<propertyname="password">
???<value>pwd</value>
??</property>
??<propertyname="javaMailProperties">
???<props>
????<propkey="mail.smtp.auth">true</prop>
???</props>
??</property>
?</bean>
?<bean id="messageSender"
??class="com.trisun.T82A.java.mail.SimpleHtmlMailSender">
??<propertyname="javaMailSender">
???<refbean="sender" />
??</property>
??<propertyname="to">
???<value>64256975@qq.com</value>
??</property>
??<propertyname="from">
???<value>t8log@jhsys.cn</value>
??</property>
??<propertyname="subject">
???<value>test</value>
??</property>
?</bean></beans>
5.applicationContext-quartz.xml<?xml version="1.0"encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
?xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
?xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.0.xsd"
?default-lazy-init="false">?<bean id="springSendMail"
??class="com.trisun.T82A.java.mail.SpringSendMail">
??<propertyname="messageSender" ref="messageSender" />
?</bean>
??<beanid="springSendMailDetail"
??class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
??<propertyname="concurrent" value="true" />
??<propertyname="targetObject" ref="springSendMail" />
??<propertyname="targetMethod" value="execute" />
?</bean>
?<!--?
??Seconds?YES? 0-59? , - */?
??Minutes?YES? 0-59? , - */?
??Hours?YES? 0-23? , - */?
??Day of month?YES? 1-31? , - * ? / L W
??Month?YES? 1-12 or JAN-DEC? , - */?
??Day of week?YES? 1-7 or SUN-SAT? , - * ? / L#?
??Year?NO? empty, 1970-2099? , - */?
?-->?<beanid="springSendMailDetailTask"
??class="org.springframework.scheduling.quartz.CronTriggerBean">
??<propertyname="jobDetail" ref="springSendMailDetail" />
??<!-- 0 * * * * ?*???每分?->
??<!-- 0 0 0 * * ?*???每天-->
??<!-- 0 0 0 1 * ?*???每月-->
??<propertyname="cronExpression" value="0/3 * * * * ?*"></property>
?</bean>
?<bean id="QuartzJobFactory"
??class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
??<propertyname="triggers">
???<list>
????<refbean="springSendMailDetailTask" />
???</list>
??</property>
??<!--讄是否Spring容器初始化后马上启动SchedulerQ默认ؓtrue。如果设|ؓfalse则需要手工启动Scheduler-->
??<propertyname="autoStartup" value="true" />
?</bean></beans>U??0-59 , - * /
??0-59 , - * /
??0-23 , - * /
??1-31 , - * ? / L W C
??1-12 ?JAN-DEC , - * /
??1-7 ?SUN-SAT , - * ? / L C #
q??I??1970-2099 , - * /



Steven_bot 2011-10-15 09:55 发表评论
]]>
SpringMVC web框架学习 Controller 分析http://www.aygfsteel.com/Steven-bot/articles/361335.htmlSteven_botSteven_botSat, 15 Oct 2011 01:49:00 GMThttp://www.aygfsteel.com/Steven-bot/articles/361335.htmlhttp://www.aygfsteel.com/Steven-bot/comments/361335.htmlhttp://www.aygfsteel.com/Steven-bot/articles/361335.html#Feedback0http://www.aygfsteel.com/Steven-bot/comments/commentRss/361335.htmlhttp://www.aygfsteel.com/Steven-bot/services/trackbacks/361335.html

SpringMVC web框架学习 Controller 分析

org.springframework.web.servlet.mvc.AbstractController (implements org.springframework.web.servlet.mvc.Controller)

Spring MVC框架中的Controller对请求进行处理:所有的Controller都实现接口ControllerQ?/p>

public interface Controller {       /**      * Process the request and return a ModelAndView object which the DispatcherServlet      * will render. A <code>null</code> return value is not an error: It indicates that      * this object completed request processing itself, thus there is no ModelAndView      * to render.      * @param request current HTTP request      * @param response current HTTP response      * @return a ModelAndView to render, or <code>null</code> if handled directly      * @throws Exception in case of errors      */     ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception;   } 上面的doc表明Controllerq回的modelandview可以使空Q表明请求都是该函数中处理完成了Q不需要modeland来进行渲染?/pre>
 
在l之前先介绍一个有用的工具c:WebUtils。用q个可以化sessionQrequest的处理。具体的内容可以参考文档?/pre>
 
Controller的第一个实现是QAbstractController。他是一个Abstractc,除了实现了Controller接口Q它q承了WebContentGenerator?/pre>
 
WebContentGenerator的作用是什么?参考文档可以发玎ͼ该类主要对Cache和Sessionq行理?/pre>
 
cacheSeconds 指定内容~存的时_默认?
requireSession 是否需要会话,默认支持
supportedMethods 支持的方法,默认是GET\post\Head
useCacheControlHeader 指定是否使用http1.1的cache控制头信息,默认使用
useCacheControlNoStore 指定是否讄http1.1的cache控制头信息ؓno-store。默认?/td>
useExpiresHeader 指定是否使用http1.0的expire头信息。默认?/td>
用户可以对这些参数进行测?cache和expire信息涉及Chttp协议信息Q更多信息可以参考http协议文档。这里不再说明?/pre>
 
再看AbstractController的代码:
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
throws Exception {

// Delegate to WebContentGenerator for checking and preparing.
checkAndPrepare(request, response, this instanceof LastModified);

// Execute handleRequestInternal in synchronized block if required.
if (this.synchronizeOnSession) {
HttpSession session = request.getSession(false);
if (session != null) {
Object mutex = WebUtils.getSessionMutex(session);
synchronized (mutex) {
return handleRequestInternal(request, response);
}
}
}
return handleRequestInternal(request, response);
}
checkandPrepare的目的就是用用于进行的配置来对requestq行预处理和准备?/pre>
他会查支持的ҎQ和会话Q然后应用cache讄?/pre>
如果需要session同步Q就q行同步处理。session同步应用于有session的情况下。如果没有sessionQsession同步是没有用的?/pre>
AbstractController会调用handleRequestInternalҎq行处理Q承AbstractController的类需要实现该Ҏ?br />
下面我们再看?strong>AbstractUrlViewController 的代码实现和文Q先看handleRequestInternal的实玎ͼ

 
/**
* Retrieves the URL path to use for lookup and delegates to
* {@link #getViewNameForRequest}.
*/
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) {
String lookupPath = getUrlPathHelper().getLookupPathForRequest(request);
String viewName = getViewNameForRequest(request);
if (logger.isDebugEnabled()) {
logger.debug("Returning view name '" + viewName + "' for lookup path [" + lookupPath + "]");
}
return new ModelAndView(viewName);
}
可以看到Q它使用了getViewNameForRequest获取需要的viewName。而getViewNameForRequest是一个抽象函敎ͼ需要子cd现。lookupPath是我们h的URL中的一部分。如我们使用UrlFilenameViewController来进行如下的配置Q?/strong>
<bean name="/index.do" class="org.springframework.web.servlet.mvc.UrlFilenameViewController"></bean>?/div>
09-11-25 11:56:06 - DEBUG [http-8200-1] - Returning view name 'index' for lookup path [/index.do]
该Controller?index.do解析成indexQ然后再通过viewResolver对indexq行扩展?jsp/index.jsp。从而找到该面?/div>
可以看到q个cȝ主要是用于对urlq行解析Q然后{到合适的面上,而在转到q个面之前不需要进行特别的处理?/div>
明白了该cȝ作用自然也就知道了UrlFilenameViewController的作用。这里不再进行详l分析?/div>


Steven_bot 2011-10-15 09:49 发表评论
]]>Spring web MVC 框架学习W记 ?ViewResolver技? http://www.aygfsteel.com/Steven-bot/articles/361334.htmlSteven_botSteven_botSat, 15 Oct 2011 01:48:00 GMThttp://www.aygfsteel.com/Steven-bot/articles/361334.htmlhttp://www.aygfsteel.com/Steven-bot/comments/361334.htmlhttp://www.aygfsteel.com/Steven-bot/articles/361334.html#Feedback0http://www.aygfsteel.com/Steven-bot/comments/commentRss/361334.htmlhttp://www.aygfsteel.com/Steven-bot/services/trackbacks/361334.html

ModelAndView对象中的view对象Q可以用字W串来让Spring框架q行解析获得适合的视图。而解析View的就是ViewResolver技术?/p>

ViewResolver的定义如下:

public interface ViewResolver {
View resolveViewName(String viewName, Locale locale) throws Exception;
}
 
在[spring-dispatcher-name]-servlet.xml中,可以定义viewResolverQ?/pre> 

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

来让DispacherServletq行加蝲默认的viewResolverQ如果没有设|viewResolverQspring使用InternalResourceViewResolverq行解析?/p>

Spring实现ViewResolver的非抽象cM我们l常使用的viewResolver有以下四U:

InternalResourceViewResolver 逻辑视图名字解析Z个\?/td>
BeanNameViewResolver 逻辑视图名字解析为bean的Name属性,从而根据name属性,扑֮义View的bean
ResourceBundleResolver 和BeanNameViewResolver一P只不q定义的view-bean都在一个properties文g中,用这个类q行加蝲q个properties文g
XmlViewResolver 和ResourceBundleResolver一P只不q定义的view-bean在一个xml文g中,用这个类来加载xml文g

 

使用多视图解析器Q?/p>

我们不想只用一U视图解析器的话Q可以在[spring-dispatcher-name]-servlet.xml定义多个viewResolverQ?/p>

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>

<bean id=”beanNameViewResolver” class=”...BeanNameViewResolver”>
<property name="order" value="1"></property>
</bean>

<bean id=”beanNameViewResolver” class=”...XmlViewResolver”>
<property name="order" value="0"></property>
</bean>

DispatcherServlet会加载所有的viewResolverC个list中,q按照优先q行解析。注意order中的D,优先U越高。而id为viewResolver

的viewResolver的优先是最低的?/p>



Steven_bot 2011-10-15 09:48 发表评论
]]>Spring3中js/css/jpg/gif{静态资源无法找刎ͼNo mapping found for HTTP request with URIQ问题解?/title><link>http://www.aygfsteel.com/Steven-bot/articles/361333.html</link><dc:creator>Steven_bot</dc:creator><author>Steven_bot</author><pubDate>Sat, 15 Oct 2011 01:45:00 GMT</pubDate><guid>http://www.aygfsteel.com/Steven-bot/articles/361333.html</guid><wfw:comment>http://www.aygfsteel.com/Steven-bot/comments/361333.html</wfw:comment><comments>http://www.aygfsteel.com/Steven-bot/articles/361333.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Steven-bot/comments/commentRss/361333.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Steven-bot/services/trackbacks/361333.html</trackback:ping><description><![CDATA[<div><p><span style="font-family: Arial; font-size: 16px">最q项目中使用到Spring3Q在感叹Spring3注解配置清爽的同时竟然出Cq个不和谐的事情Q实在无法忍?/span></p> <p><span style="background-color: #660000; font-family: Arial; color: #99e600; font-size: 16px">问题Q?/span><span style="font-family: Arial; font-size: 16px">部v目后程序加载或用浏览器讉K时出现类似的警告Q?011-01-19 10:52:51,646 WARN [org.springframework.web.servlet.PageNotFound] -</span><span style="font-family: Arial; color: #ff0000; font-size: 16px"><No mapping found for HTTP request with URI [/sandDemo001/images/1.jpg] in DispatcherServlet with name 'spring'></span><span style="font-family: Arial; font-size: 16px">Q主要看括号内部分?/span></p> <p><span style="background-color: #660000; font-family: Arial; color: #99e600; font-size: 16px">问题原因Q?/span><span style="font-family: Arial; font-size: 16px">|魁R是web.xml下对spring的DispatcherServlethurl映射的配|,原配|如下:</span></p> <p><strong><span style="background-color: #d9d9d9; font-family: Comic Sans MS; color: #660000; font-size: 14px"><servlet></span><br /><span style="font-family: 'Comic Sans MS'; color: #660000; font-size: 14px; background-color: #d9d9d9; ">    <servlet-name>spring</servlet-name></span><br /><span style="background-color: #d9d9d9; font-family: Comic Sans MS; color: #660000; font-size: 14px">    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class></span><br /><span style="background-color: #d9d9d9; font-family: Comic Sans MS; color: #660000; font-size: 14px">    <load-on-startup>1</load-on-startup></span><br /><span style="background-color: #d9d9d9; font-family: Comic Sans MS; color: #660000; font-size: 14px"> </servlet></span><br /><span style="background-color: #d9d9d9; font-family: Comic Sans MS; color: #660000; font-size: 14px"> <servlet-mapping></span><br /><span style="background-color: #d9d9d9; font-family: Comic Sans MS; color: #660000; font-size: 14px">        <servlet-name>spring</servlet-name></span><br /><span style="background-color: #d9d9d9; font-family: Comic Sans MS; color: #660000; font-size: 14px">        <url-pattern>/</url-pattern></span><br /><span style="background-color: #d9d9d9; font-family: Comic Sans MS; color: #660000; font-size: 14px"> </servlet-mapping></span></strong></p> <p><span style="background-color: #ffffff; color: #660000; font-size: 14px"><span style="background-color: #660000; font-family: Arial; color: #99e600; font-size: 16px">分析原因Q?/span><span style="background-color: #d9d9d9; font-family: Arial; color: #660000; font-size: 16px"><servlet-mapping></span><span style="font-family: Arial; font-size: 16px">?/span><span style="background-color: #d9d9d9; font-family: Arial; color: #660000; font-size: 16px"><url-pattern>/</url-pattern></span><span style="font-family: Arial; font-size: 16px">把所有的h都交lspringd理了Q而所有available的请求url都是在Constroller里用类似@RequestMapping(value = "/login/{user}", method = RequestMethod.GET)q样的注解配|的Q这L话对js/css/jpg/gif{静态资源的讉K׃得不到?/span></span></p> <p><span style="background-color: #ffffff; color: #660000; font-size: 14px"><span style="background-color: #660000; font-family: Arial; color: #99e600; font-size: 16px">解决ҎQ?/span><span style="font-family: Arial; font-size: 16px">在web.xml里添加如下的配置</span></span></p> <p><strong><span style="background-color: #ffffff; color: #660000; font-size: 14px"><span style="background-color: #d9d9d9; font-family: Comic Sans MS; font-size: 14px"><servlet-mapping></span><br /><span style="background-color: #d9d9d9; font-family: Comic Sans MS; font-size: 14px">     <servlet-name>default</servlet-name></span><br /><span style="background-color: #d9d9d9; font-family: Comic Sans MS; font-size: 14px">     <url-pattern>*.css</url-pattern></span><br /><span style="background-color: #d9d9d9; font-family: Comic Sans MS; font-size: 14px"></servlet-mapping></span><br /> <br /><span style="background-color: #d9d9d9; font-family: Comic Sans MS; font-size: 14px"><servlet-mapping></span><br /><span style="background-color: #d9d9d9; font-family: Comic Sans MS; font-size: 14px">    <servlet-name>default</servlet-name></span><br /><span style="background-color: #d9d9d9; font-family: Comic Sans MS; font-size: 14px">    <url-pattern>*.gif</url-pattern></span></span></strong></p> <p><strong><span style="background-color: #ffffff; color: #660000; font-size: 14px"><span style="background-color: #d9d9d9; font-family: Comic Sans MS; font-size: 14px"> </servlet-mapping></span><br /><span style="background-color: #d9d9d9; font-family: Comic Sans MS; font-size: 14px">    </span><br /><span style="background-color: #d9d9d9; font-family: Comic Sans MS; font-size: 14px"> <servlet-mapping></span><br /><span style="background-color: #d9d9d9; font-family: Comic Sans MS; font-size: 14px">     <servlet-name>default</servlet-name></span><br /><span style="background-color: #d9d9d9; font-family: Comic Sans MS; font-size: 14px">     <url-pattern>*.jpg</url-pattern></span><br /><span style="background-color: #d9d9d9; font-family: Comic Sans MS; font-size: 14px"> </servlet-mapping></span><br /><span style="background-color: #d9d9d9; font-family: Comic Sans MS; font-size: 14px">    </span><br /><span style="background-color: #d9d9d9; font-family: Comic Sans MS; font-size: 14px"> <servlet-mapping></span><br /><span style="background-color: #d9d9d9; font-family: Comic Sans MS; font-size: 14px">     <servlet-name>default</servlet-name></span><br /><span style="background-color: #d9d9d9; font-family: Comic Sans MS; font-size: 14px">     <url-pattern>*.js</url-pattern></span><br /><span style="background-color: #d9d9d9; font-family: Comic Sans MS; font-size: 14px"> </servlet-mapping><br /><br /><div><p><strong><span style="background-color: #ffffff; font-family: Arial; color: #ff0000; font-size: 18px">解决Ҏ2Q?span style="color: #000000; font-size: 14px">在spring的配|文件中d如下一行:</span></span></strong></p> <p><strong></strong><span style="background-color: #ffffff; color: #660000; font-size: 14px"><strong><span style="color: #006699"><span><mvc:default-servlet-handler/></span></span></strong></span></p> <p><span style="background-color: #ffffff; color: #660000; font-size: 14px">注意Q需要是spring3.0.5以上版本<br /><div><span style="font-family: verdana, 'courier new'; color: #000000; font-weight: normal; "><strong><span style="background-color: #ffffff; color: #660000; font-size: 14px; "><span style="background-color: #d9d9d9; font-family: 'Comic Sans MS'; font-size: 14px; "><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px; "><strong><span style="background-color: #ffffff; font-family: Arial; color: #ff0000; font-size: 18px; ">解决Ҏ3</span></strong></p></div></span></span></strong></span></div><div><div style="overflow: hidden; word-break: normal" name="cmtcontent"><!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory --><br /> <br /> <mvc:resources mapping="/resources/**" location="/resources/" /> <br />  <br />q个配置告诉spring 静态资源的处理方式</div></div></span></p></div></span></span></strong></p></div><img src ="http://www.aygfsteel.com/Steven-bot/aggbug/361333.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Steven-bot/" target="_blank">Steven_bot</a> 2011-10-15 09:45 <a href="http://www.aygfsteel.com/Steven-bot/articles/361333.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ҎSpring 1.0?.0的事务配|方?/title><link>http://www.aygfsteel.com/Steven-bot/articles/360155.html</link><dc:creator>Steven_bot</dc:creator><author>Steven_bot</author><pubDate>Sat, 08 Oct 2011 01:21:00 GMT</pubDate><guid>http://www.aygfsteel.com/Steven-bot/articles/360155.html</guid><wfw:comment>http://www.aygfsteel.com/Steven-bot/comments/360155.html</wfw:comment><comments>http://www.aygfsteel.com/Steven-bot/articles/360155.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Steven-bot/comments/commentRss/360155.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Steven-bot/services/trackbacks/360155.html</trackback:ping><description><![CDATA[<div><span style="font-family: verdana, 'ms song', 宋体, Arial, 微Y雅黑, Helvetica, sans-serif; font-size: 13px; line-height: 19px; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5; background-color: #ffff00; ">Spring</span></span> 1.0的标准事务配|?nbsp;<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />先定义一个baseTxServiceq行基本的事务定义,cd为TransactionProxyFactoryBean。如果service没有Z接口Q用cgilib来实现AOPQ定?lt;property name="proxyTargetClass" value="true"/> <br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />实际的Managerc设|parent=baseTxServiceQtarget 为匿名的实际ManagercR如果需要定义特D的事务Q利用merge=true的属性,在manager的transactionAttributes节点q行C务的定义?nbsp;<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /><bean id="baseTxService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" <br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />          abstract="true"> <br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />        <property name="transactionManager" ref="transactionManager"/> <br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />        <property name="proxyTargetClass" value="true"/> <br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />        <property name="transactionAttributes"> <br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />            <props> <br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />                <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop> <br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />                <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop> <br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />                <prop key="save*">PROPAGATION_REQUIRED</prop> <br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />                <prop key="remove*">PROPAGATION_REQUIRED</prop> <br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />            </props> <br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />        </property> <br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />        <property name="preInterceptors"> <br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />            <list> <br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />                <ref bean="methodSecurityInterceptor"/> <br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />            </list> <br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />        </property> <br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /></bean> <bean id="bookManager" parent="baseTxService"> <br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />        <property name="target"> <br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />            <bean class="org.springside.bookstore.admin.manager.BookManager"/> <br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />        </property> <br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /></bean><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5; background-color: #ffff00; ">Spring</span></span> <span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5; background-color: #55ff55; ">2</span></span>.0的新配置Q?nbsp;<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />如果如果service没有Z接口Q用cgilib来实现AOPQ定义proxy-target-class="true" <br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /><aop:config proxy-target-class="true"> <br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />    <aop:advisor pointcut="execution(* com.xyz.service..*Manager.*(..))" advice-ref="txAdvice"/> <br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />    <aop:advisor pointcut="execution(* com.xyz.service..*Manager.save(..))" advice-ref="fooAdvice"/> <br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /></aop:config><tx:advice id="txAdvice" transaction-manager="transactionManager"> <br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />    <tx:attributes> <br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />        <tx:method name="get*" read-only="true"/> <br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />        <tx:method name="find*" read-only="true"/> <br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />        <tx:method name="*" /> <br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />   </tx:attributes> <br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /></tx:advice> <br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /><bean id="bookManager" class="org.springside.bookstore.commons.service.BookManager"/>   其中com.xyz是你的项目package限定前缀?nbsp;<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5; background-color: #55ff55; ">2</span></span>.q步 <br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />1. AOP的配|方式也AOP了?nbsp;<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />      Ҏ1.0的配|文Ӟ因ؓ下面<span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5; background-color: #55ff55; ">2</span></span>提到的限Ӟ事关安全acegi methodSecurityInterceptor 拦截器要配置在关于事务的TransactionProxyFactoryBean的preInterceptors属性里Q这样子׃点不AOP了?nbsp;<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />      ?span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5; background-color: #55ff55; ">2</span></span>.0使用ponintcut expressionQ很AOP的配|一切Aspect?nbsp;<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5; background-color: #55ff55; ">2</span></span>. 1.0Ӟ一个已lAOPq的object不能再次被AOP?nbsp;<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />   ?span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5; background-color: #ffff00; ">Spring</span></span> 1.0的文里Rod_比如<bean id="bookManager" parent="baseTxService">已经q行了一ơAOPQ如果想在这个Bean上再配一层AOPQ比如要Ҏ法执行结果缓存,无论?.0 q是<span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5; background-color: #55ff55; ">2</span></span>.0的方式定义,cglib方式是会报错的,而基于接口的方式Q结果不定?nbsp;<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />3. BookManager能直接定义自己,而不是像1.0那样作匿名内部target?nbsp;<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />虽然?.0时代的BeanNameAutoProxyCreator 辑ֈcM作用Q但只能用BeanName来模p匹配比较危险,没有AspectJ的pointcut语法l致?nbsp;<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />3. 语法 <br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />满江U翻译的 <span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5; background-color: #ffff00; ">Spring</span></span>参考文?6.3 schema-based AOP support 提供了aspect,advisor,advide三种l装Ҏ的解释,其中aspect是aspectJ原装Q但E复杂?nbsp;<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />唯一有点难懂的是pointcut里的语法Q其实也很好学,<span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5; background-color: #ffff00; ">Spring</span></span>参考文?.<span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5; background-color: #55ff55; ">2</span></span>.3.4 CZ里有完整说明 Q其实一排子q去?nbsp;<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern) throws-pattern?)其中带问Lmodifiers-pattern?(public/protected) ?declaring-type-pattern? throws-pattern? 可以不填 <br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />execution(* *..BookManager.save(..))的解? <br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />W一? 代表ret-type-pattern q回值可LQ?nbsp;<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />*..BookManager 代表LPacakge里的BookManagercR?nbsp;<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />如果写成com.xyz.service.* 则代表com.xyz.service下的Lc?nbsp;<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />com.xyz.service..* com.xyz.service则代表com.xyz.service及其子package下的Lc?nbsp;<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />save代表saveҎQ也可以写save* 代表saveBook(){方?nbsp;<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />(..) 匚w0个参数或者多个参数的QQ意类?nbsp;<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />(x,..) W一个参数的cd必须是X <br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />(x,,,s,..) 匚w臛_4个参敎ͼW一个参数必LxcdQ第二个和第三个参数可以LQ第四个必须是scd?nbsp;<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />   注意事项Q?nbsp;<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />1. name-pattern千万不要写成*..*Manager Q这样子会把所有第三方cd的Manager比如<span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5; background-color: #ffff00; ">Spring</span></span>的PlatformTranstationManager 也加入aopQ非常危险。所以最好还是加上项目的package前缀Q如"org.springside..*Manager" <br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5; background-color: #55ff55; ">2</span></span>. 因ؓ?Q会修饰所有方法,有些hibernateTemplate的final的方法不能被cglib修改Q会抛warningQ无実?nbsp;<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />4. 事务定义选项 <br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />事务定义一般默认的PROPAGATION_REQUIRED卛_Q另提供的几个选择很少使用。值得注意的是一个PROPAGATION_NESTEDQ嵌入式事务的意义在于多U事务,如果出错只rollback子事务自己,不rollbackM务的所有操作。比如OrderManager的shipOrder函数 调用 save函数Q如果save()被定义ؓ嵌入式事务,当进入save()Ӟ会存储save point。如果在save 中出错,会rollback 到刚才的save pointQ但不媄响其他的操作。这需要JDBC3.0 SavePoint功能的支持?而一般service间互相嵌入调用时Q如果都定义为PROPAGATION_REQUIREDQ有其中一个操作出错,rollback全部操作?/span></div><img src ="http://www.aygfsteel.com/Steven-bot/aggbug/360155.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Steven-bot/" target="_blank">Steven_bot</a> 2011-10-08 09:21 <a href="http://www.aygfsteel.com/Steven-bot/articles/360155.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">¹</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>