StevenBot-Saltsam

          眼睛能裝下世界,為何卻裝不下眼淚? 一只風箏一輩子只為一根線冒險。 那不是一場游戲,為何總有一根線牽著心懷,隱隱作疼? 那不是一段邂逅,為何飄在橋上的影子,總纏進夢鄉? 那不是一個夢境,為何你的溫柔私語,總是不經意的響起?

          導航

          <2011年11月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          統計

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          datas link

          OSChinal Sources codes Library

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          Spring 學習

          1.spring屬性的注入配置

          1. 1.      屬性的注入配置

          Bean文件的配置,即為bean的各屬性賦值

           

          <bean id="sone" class="edu.yzu.entity.Student" init-method="initialMethod" parent="sbean" >

          <!—- init-method指定了該bean類初始化后用來驗證屬性是否合法,該方法會在屬性設置結束后調用 ,

          Parent是指本bean中的一些屬性如果沒有初始化則會以sbean中的相同屬性名的對應值來初始化--!>

                 <property name="id" value="10002" />

                 <property name="name" value="Rose" />

                 <property name="sex" value="boy" />

                 <property name="age" value="23" />

                 <property name="birthday" value="1980-10-24" />

                 <property name="emails">

                     <list>

                        <value>123@qq.com</value>

                        <value>456@sina.com</value>

                        <value>789@163.com</value>

                     </list>

                 </property>

                 <property name="phones">

          //list或者數組類型的屬性注入

                     <list>

                        <value>13657164847</value>

                        <value>15901083941</value>

                        <value>13797502137</value>

                     </list>

                 </property>

                 <property name="scores">

          //為map指定 key value屬性指定一般類型,key-ref  value-ref指定的是bean引用

                     <map>

                        <entry key="math" value="97" />

                        <entry key="chinese" value="96" />

                        <entry key="englist" value="92" />

                     </map>

                 </property>

           

                 <property name="classmates">

          //set類型的屬性注入

                     <set>

                        <ref local="sone" />

          <!-- 表時此值并非String int 等原始類型,local指明這個值是本配置文件的一個bean -à

                        <ref local="myself" />

                     </set>

                 </property>

              </bean>

          1. 非自動類型轉換

          對bean屬性的注入過程中,如果一些類型不能注入,則可以類型轉換,自定義轉換該類型的轉換器,如上面的birthday屬性是日期性的,spring 不能自動注入該類型,則自定義轉換器如下:

          public class myDateEditor extends PropertyEditorSupport {

              @Override

              public void setAsText(String text) throws IllegalArgumentException {

                 try {

                     SimpleDateFormat format = new SimpleDateFormat("yyyy-mm-dd");

                     Date date = format.parse(text);

                     setValue(date);

                 } catch (ParseException e) {

                     e.printStackTrace();

                     new IllegalAccessException(e.getMessage());

                 }

              }

          }

           

           

           

           

           

           

          配置文件如下 :只要這樣配置后spring 遇到java.util.Date類型后會自動調用上面的轉換器,注入bean屬性

           

              <bean id="myeditor"

                 class="org.springframework.beans.factory.config.CustomEditorConfigurer">

                 <property name="customEditors">

                     <map>

                        <entry key="java.util.Date">

                            <bean id="dateEditor" class="edu.yzu.editor.myDateEditor" />

                        </entry>

                     </map>

                 </property>

              </bean>

          2.spring非自動類型轉換

          對bean屬性的注入過程中,如果一些類型不能注入,則可以類型轉換,自定義轉換該類型的轉換器,如上面的birthday屬性是日期性的,spring 不能自動注入該類型,則自定義轉換器如下:

          public class myDateEditor extends PropertyEditorSupport {

              @Override

              public void setAsText(String text) throws IllegalArgumentException {

                 try {

                     SimpleDateFormat format = new SimpleDateFormat("yyyy-mm-dd");

                     Date date = format.parse(text);

                     setValue(date);

                 } catch (ParseException e) {

                     e.printStackTrace();

                     new IllegalAccessException(e.getMessage());

                 }

              }

          }

           

          3.spring中面向切面的使用

          1. BeanPostProcessor接口的使用

           

          BeanPostProcessor接口用在bean生成后將放入ApplicationContext前進行一些必要的處理,它有兩個方法,分別在調用bean配置的init-method前后執行(如果配置了的話),本接口的實現類常常結合動態代理生成bean的代理類型:

          class MyProxyClass {

              private Object target;

           

              public MyProxyClass(Object target) {

                 this.target = target;

              }

           

              public Object getNewProxy() {

                 return Proxy.newProxyInstance(target.getClass().getClassLoader(),

                        target.getClass().getInterfaces(), new InvocationHandler() {

           

                            public Object invoke(Object proxy, Method method,

                                   Object[] args) throws Throwable {

                               System.out.println("you can do something here!!");

                               Object obj = method.invoke(target, args);

                               System.out.println("you can do something here!!");

                               return obj;

                            }

                        });

              }

          }

           

          接口使用如下,接口使用如下,一般只要在postProcessAfterInitialization里面配置后即可(事實上這在實際開發中很少使用,一般會使用spring提供的組件,但其底層是使用這些的)

          public class MyBeanPostProcessor implements BeanPostProcessor {

           

              public Object postProcessAfterInitialization(Object bean, String id)

                     throws BeansException {

                

          //參數Object 為生成的bean id 為該bean在配置文件中的id,這里我們一該用動態代理來生成一個代理對象返回

                 return new  MyProxyClass(bean).getNewProxy();

              }

           

              public Object postProcessBeforeInitialization(Object bean, String id)

                     throws BeansException {

                        return bean;

              }

           

          }

           

          配置如下:

              <bean id="myprocessor" class="edu.yzu.filter.MyBeanPostProcessor" />

          如上配置后spring 會自動為每個生成的bean生成相應的代理,如上代理的的效果為在調用每個方法找對應此bean的id,,,我們可以使用動態代理來生成

           

          1. 對bean中方法的方法的攔截(既自定義的Advice)共有四種,分別為四個接口,繼承此四個接口后分別實現對應的方法:

          MethodBeforeAdvice(在方法調用之前)

              public void before(Method method, Object[] args, Object target)

                     throws Throwable {

          //要在方法調用之前執行的操作

              }

          MethodInterceptor (在方法調用之前之后都可以用此接口中的一個方法得到)

              AfterReturningAdvice(在方法返回以后)

              public void afterReturning(Object returnValue, Method method, Object[] args,

                     Object targer) throws Throwable {

                 //在方法調用之后 要執行的操作

              }

              ThrowsAdvice(在方法拋出異常以后會攔截)

          public void afterThrowing(Exception e) {

                 Session session=HibernateSessionFactory.getSessionFactory().getCurrentSession();

                 session.getTransaction().rollback();

              }

          注意:ThrowsAdvice接口中沒有任何方法,但是使用此接口必須給出的方法簽名為:afterThrowing,它可以重載多次,當相應的異常發生后調用對應的處理方法

          使用:在配置文件中配置自定義的Advice,比如我有一個 TranstionManager類,它用來控制事務,實現了MethodInterceptor,如下!

          public class TranstionManager implements MethodInterceptor {

              public Object invoke(MethodInvocation invocation) throws Throwable {

                 Session session = HibernateSessionFactory.getSessionFactory()

                        .getCurrentSession();

                 Transaction trans = session.getTransaction();

                 trans.begin();

                 Object obj = invocation.proceed();

                 trans.commit();

                 return obj;

              }

          }

          文件的配置如下:

              <bean id="transtionmanager" class="edu.yzu.filter.TranstionManager"/>

          另外有一個bean即為攔截的目標對象,為其生成代理對象,該bean的配置如下:

          <bean id="userDao" class="edu.yzu.dao.impl.UserDaoImpl"/>

             

              <bean id="userBiz" class="edu.yzu.biz.impl.UserBizImpl">

              <property name="userDao">

              <ref local="userDao"/>//將userDao注入到到UserBizImpl中

              </property>

              </bean>

          下面為userBiz生成代理對象的bean使用時用ApplicationContext對象實例applicationContext調用代理對象的方法為:applicationContext.getBean(“userBizImpl”);

          <bean id="userBizImpl" class="org.springframework.aop.framework.ProxyFactoryBean">

              <property name="target">

              <ref local="userBiz"/>//指定給哪個目標對象建立代理

              </property>

              <property name="interceptorNames">

              <list>

              <value>transtionmanager</value>

          //使用的Advice, 可以配置多個

              </list>

              </property>

              <property name="interfaces">

              <list>

              <value>edu.yzu.biz.UserBiz</value>

          //指定要代理目標對象的哪個的接口

              </list>

              </property>

              </bean>

          (上面是為實現接口的類生成代理) 缺點:一旦為一個bean指定代理,則bean中的所有方法都會被代理,不能指定為特定的方法指定代理,沒有體現面向切面的特點!優點,依然可以拿到代理前的bean對象。如果沒有實現任何接口,則不必要加name=”interfaces” 的項,但要加<property name="proxyTargetClass">

                 <value>true</value>

                 </property>表示這個bean沒有實現任何接口,spring為它生成它的子類(cglib實現)

           

          1. 切面=切入點+切入內容。既為:aspect=pointcut+advice  spring 中切面用advisor表示,可以在配置文件中配置。切入的內容即為我們自定義的類型,它實現四個接口的的任何一個。切入點即為要切入內容的目標類型的方法:由此可知切面的配置也要配置這兩項!

          l         為一個bean配置一個advisor ,一個advisor里面只能有一個advice,但是可以給此advisor指定幾個切入點,方法如下:

               <bean id="myadvisor" class="org.springframework.aop.support.NameMatchMethodPointcutAdvisor">

              <property name="advice">

              <ref local="transtionmanager"/>

              </property>

              <property name="mappedNames">

              <list>

              <value>addProduct</value>

              <value>deleteProductById</value>

              <value>getAllProducts</value>

              <value>getProduct</value>

              <value>getProducts</value>

              <value>updateProduct</value>

              </list>

              </property>

          </bean>

          這個Advisor只指定的advice為transtionmanager 為切入的內容,切入點為list只的幾個方法名,既所代理的bean中,只有方法名相同的才能被切入。這正是面向切面的思想所在,advisor用法如下:

          <bean id="productBizImpl" class="org.springframework.aop.framework.ProxyFactoryBean">

              <property name="target">

              <ref local="productBiz"/>

              </property>

              <property name="interceptorNames">

              <list>

              <value>myadvisor</value>

              <value>exceptionadvice</value>//這個是沒有包裝的advice,配置如下:

          //<bean id="exceptionadvice" class="edu.yzu.filter.ExceptionFilter"/>

              </list>

              </property>

              <property name="interfaces">

              <list>

              <value>edu.yzu.biz.ProductBiz</value>

              </list>

              </property>

          </bean>

          這樣做的好處體現了面向切面的思想,既給指定的切入點切入想要執行的內容。

           

          下面是為多個bean指定多個advisor的方法,似乎也是最為常用的。

           

          l         第一種:為多個bean同時指定多個advisor

          Advisor配置不變,如下

               <bean id="myadvisor" class="org.springframework.aop.support.NameMatchMethodPointcutAdvisor">

              <property name="advice">

              <ref local="transtionmanager"/>

              </property>

              <property name="mappedNames">

              <list>

              <value>addProduct</value>

              <value>deleteProductById</value>

              <value>getAllProducts</value>

              <value>getProduct</value>

              <value>getProducts</value>

              <value>updateProduct</value>

              </list>

              </property>

          </bean>

           

          指定代理的目標對象的配置如下,既為哪些目標bean生成代理

              <bean id="autoProxy"

                 class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">

                 <property name="interceptorNames">

                     <list>

                        <value>myadvisor</value>

                        <value>exceptionadvisor</value>

          //自定義的advisor

                     </list>

                 </property>

                 <property name="beanNames">

                     <list>

                        <value>userBiz</value>

                        <value>productBiz</value>

          //生成代理的目標對象

                     </list>

                 </property>

              </bean>

          優點:可以同時為多個bean指定多個advisor。不足,因為是自動的為指定的bean生成代理,所以不能再得到原來的bean,只能拿到代理后的bean對象

           

          l         第二種:為多個bean同時指定多個advisor

          完整配置如下:

              <bean id="userBiz" class="edu.yzu.biz.impl.UserBizImpl">

                 <property name="userDao">

                     <bean id="userDao" class="edu.yzu.dao.impl.UserDaoImpl" />

                 </property>

              </bean>

              <bean id="productBiz" class="edu.yzu.biz.impl.ProductBizImpl">

                 <property name="productDao">

                     <bean id="productDao" class="edu.yzu.dao.impl.ProductDaoImpl" />

                 </property>

          </bean>

           

          <bean id="myadvisor"

                 class="org.springframework.aop.support.NameMatchMethodPointcutAdvisor">

                 <property name="advice">

                     <bean id="transtionmanager" class="edu.yzu.filter.TranstionManager" />

                 </property>

                 <property name="mappedNames">

                     <list>

                        <value>addProduct</value>

                        <value>deleteProductById</value>

                        <value>getAllProducts</value>

                        <value>getProduct</value>

                        <value>getProducts</value>

                        <value>updateProduct</value>

                     </list>

                 </property>

              </bean>

           

              <bean id="exceptionadvice"

                 class="org.springframework.aop.support.NameMatchMethodPointcutAdvisor">

                 <property name="advice">

                     <bean id="exadvice" class="edu.yzu.filter.ExceptionFilter" />

                 </property>

                 <property name="mappedNames">

                     <list>

                        <value>addProduct</value>

                        <value>deleteProductById</value>

                        <value>getAllProducts</value>

                        <value>getProduct</value>

                        <value>getProducts</value>

                        <value>updateProduct</value>

                     </list>

                 </property>

          </bean>

           

          <bean id="defaultautoproxy"

              class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"/>

          優點,可以同時多個bean指定多個,advisor,缺點:可控性差。會為整個配置文件的所有的非advisor的bean都指定所有的advisor。注意事項,不必要的bean不要放在一個配置文件中,或者放在另外一個bean的內部,但是這樣的bean對外界不可見,即不可用ApplicationContext的對象通過getBean得到!(實際用得不多)

          6.spring中事務管理

          聲明式的事務管理(Declarative transaction management): 
          <bean id="dataSource"

                 class="org.apache.commons.dbcp.BasicDataSource">

                 <property name="driverClassName">

                     <value>oracle.jdbc.OracleDriver</value>

                 </property>

                 <property name="url">

                     <value>jdbc:oracle:thin:@localhost:1521:XE</value>

                 </property>

                 <property name="username">

                     <value>rose</value>

                 </property>

                 <property name="password">

                     <value>aier</value>

                 </property>

              </bean>

           

              <bean id="sessionFactory"

                 class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

                 <property name="dataSource">

                     <ref bean="dataSource" />

                 </property>

                 <property name="hibernateProperties">

                     <props>

                        <prop key="hibernate.dialect">

                            org.hibernate.dialect.Oracle9Dialect

                        </prop>

                        <prop key="hibernate.show_sql">true</prop>

                        <prop key="hibernate.format_sql">true</prop>

                        <prop key="hibernate.jdbc.batch_size">15</prop>

                     </props>

                 </property>

                 <property name="mappingResources">

                     <list>

                        <value>com/kettas/shops/entity/Entity.hbm.xml</value>

                     </list>

                 </property>

              </bean>

           

              <bean id="hibernatetemplate"

                 class="org.springframework.orm.hibernate3.HibernateTemplate">

                 <property name="sessionFactory">

                     <ref bean="sessionFactory" />

                 </property>

              </bean>

           

              <!--

                 dao的bean

                 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

              -->

              <bean id="userDao" class="edu.yzu.shops.dao.impl.UserDaoImpl">

                 <property name="hibernateTemplate">

                     <ref local="hibernatetemplate" />

                 </property>

              </bean>

           

              <!--

                 biz的配置

                 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

              -->

              <bean id="userBiz" class="edu.yzu.shops.biz.impl.UserBizImpl">

                 <property name="userDao">

                     <ref local="userDao" />

                 </property>

              </bean>

           

              <!--

                 事物控制

                 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

              -->

              <bean id="transactionManager"

                 class="org.springframework.orm.hibernate3.HibernateTransactionManager">

                 <property name="sessionFactory">

                     <ref bean="sessionFactory" />

                 </property>

              </bean>

           

              <bean id="transactionInterceptor"

                 class="org.springframework.transaction.interceptor.TransactionInterceptor">

                 <property name="transactionManager">

                     <ref bean="transactionManager" />

                 </property>

                 <property name="transactionAttributes">

                     <props>

                        <prop key="add*">PROPAGATION_REQUIRED,-Exception</prop>

                        <prop key="update*">

                            PROPAGATION_REQUIRED,-Exception

                        </prop>

                        <prop key="delete*">

                            PROPAGATION_REQUIRED,-Exception

                        </prop>

                     </props>

                 </property>

              </bean>

           

              <!-- 有兩種方式可以給一個bean加上事務控制,一種為自動創建。

                 另一種是指明創建 .第一種為:-->

              <bean id="autoProxy"

                 class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">

                 <property name="beanNames">

                     <list>

                        <value>userBiz</value>

                        <value>productBiz</value>

                        <value>orderBiz</value>

                        <value>orderItemBiz</value>

                        <value>categoryBiz</value>

                     </list>

                 </property>

                 <property name="interceptorNames">

                     <list>

                        <value>transactionInterceptor</value>

                     </list>

                 </property>

              </bean>

          <!-- 第二種方法為下面,顯然表比較少時用第二種可以,但是當表比較多時顯然第一種更合適。 -->

              <bean id="userBizProxy"

                 class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">

                 <property name="target">

                     <ref bean="userBiz" />

                 </property>

                 <property name="transactionManager">

                     <ref bean="transactionManager" />

                 </property>

                 <!-- 下面的設置表時要代理的不是類本身,而是其實現的接口 -->

                 <property name="proxyTargetClass">

                     <value>false</value>

                 </property>

                 <property name="proxyInterfaces">

                     <list>

                        <value>edu.yzu.biz.UserBiz</value>

                     </list>

                 </property>

                 <property name="transactionAttributes">

                     <props>

                        <prop key="add*">PROPAGATION_REQUIRED,-Exception</prop>

                        <prop key="update*">

                            PROPAGATION_REQUIRED,-Exception

                        </prop>

                        <prop key="delete*">

                            PROPAGATION_REQUIRED,-Exception

                        </prop>

                     </props>

                 </property>

              </bean>

           

           

           

           

              <!--

                 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

                  -->

          1. 

          2. 

          3. 

          4. 

          5. 

          6. 

          7. <bean

            class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">

            <!-- 配置事務管理器 -->

            <property>

             <ref bean="transactionManager" />

            </property>

            <!-- 此屬性指定目標類本身是否是代理的對象,如果目標類沒有實現任何類,就設為true代表自己 -->

            <property>

             <value>false</value>

            </property>

            <property>

             <value> com.test.service.userManageService</value>

            </property>

            <!-- 目標bean -->

            <property>

             <ref bean="userManageService"/>

            </property>

            <!-- 配置事務屬性 -->

          <property>

             <props>

          <prop key="delete*">PROPAGATION_REQUIRED</prop>

          <prop key="add*">PROPAGATION_REQUIRED</prop>

          <prop key="update*">PROPAGATION_REQUIRED</prop>

          <prop key="save*">PROPAGATION_REQUIRED</prop>

          <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>

          </props>

          </property>

          </bean>

           

           

          利用繼承的思想簡化配置,適合相對比較多的模塊時使用。

           <bean id="transactionBase"  

            class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"  

            lazy-init="true" abstract="true">   

            <!-- 配置事務管理器 -->   

            <property name="transactionManager">   

             <ref bean="transactionManager" />   

            </property>   

            <!-- 配置事務屬性 -->   

            <property name="transactionAttributes">   

             <props>   

          <prop key="delete*">PROPAGATION_REQUIRED</prop>   

          <prop key="add*">PROPAGATION_REQUIRED</prop>   

          <prop key="update*">PROPAGATION_REQUIRED</prop>   

          <prop key="save*">PROPAGATION_REQUIRED</prop>   

          <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>   

          </props>   

          </property>

          </bean>   

          8.<bean

            class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"

            lazy-init="true" abstract="true">

            <!-- 配置事務管理器 -->

            <property>

             <ref bean="transactionManager" />

            </property>

            <!-- 配置事務屬性 -->

            <property>

             <props>

          <prop key="delete*">PROPAGATION_REQUIRED</prop>

          <prop key="add*">PROPAGATION_REQUIRED</prop>

          <prop key="update*">PROPAGATION_REQUIRED</prop>

          <prop key="save*">PROPAGATION_REQUIRED</prop>

          <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>

          </props>

          </property>

          </bean>


          而具體的模塊可以簡單的這樣配置。只要指明它的parent(父類)就可以了。父類一般把abstract="true",因為在容器加載的時候不需要初始化,等到用的時候再有它的子類調用的時候,再去初始化。

          Java代碼

          <bean id="userManageServiceProxy" parent="transactionBase" >   

            <property name="target">   

            <ref bean="userBiz"/>   

            </property>   

          </bean>  <bean parent="transactionBase" >

            <property>

            <ref bean="userManageService"/>

            </property>

          </bean>

          8.DWR與spring的整合簡單使用

          1. 文件的配置。在web.xml中配置dwr的攔截器,為一個Servlet,配置如下:

                 <servlet>

                 <servlet-name>dwrServlet</servlet-name>

                 <servlet-class>

                     org.directwebremoting.servlet.DwrServlet

                 </servlet-class>

                 <init-param>

                     <param-name>debug</param-name>

                     <param-value>true</param-value>

                 </init-param>

              </servlet>

              <servlet-mapping>

                 <servlet-name>dwrServlet</servlet-name>

                 <url-pattern>/dwr/*</url-pattern>

              </servlet-mapping>

          1. 在dwr.xml文件中的配置

                <?xml version="1.0" encoding="UTF-8"?>

          <!DOCTYPE dwr PUBLIC

              "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"

              "http://getahead.org/dwr/dwr20.dtd">

          <dwr>

              <allow>

                 <create javascript="JTestBean" creator="new">

                     <param name="class" value="edu.yzu.dwr.TestBean"/>

                 </create>

                 <convert  converter="bean" match="edu.yzu.dwr.Student"/> 

                     <!--

                   <convert converter="bean" match="edu.yzu.dwr.Teacher"/>     

                   若是在方法簽名或者返回類型中用到了自定義類型,則要加上這一句,即給自定義類型一個轉換器,在客戶端會自動被轉換為js對象   -->

              </allow>

          <!—下面也有必要配置一下,即當所使用的方法簽名有用到泛型集合時要指定(往往不配置也沒沒有什么錯誤)-- >

              <signatures>

                 <![CDATA[

                    import java.util.* ;

                    import edu.yzu.entity.*.*;

                    public List<User> queryAllUsers() ;

                 ]]>

              </signatures>

          1. 在所使用的頁面引用dwr動態生成的js文件!

          <script src="/ajax/dwr/interface/JTestBean.js"></script>

          <script src="/ajax/dwr/engine.js"></script> 

          如果有必要還可以引用dwr提供的一個util.js的工具包

           

          1. dwr整合spring的配置

          <?xml version="1.0" encoding="UTF-8"?>

          <!DOCTYPE dwr PUBLIC

              "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"

              "http://getahead.org/dwr/dwr20.dtd">

           

          <!-- dwr與spring的整合

          create標簽的creator值為spring表時dwr在不創建對象,而是使用

          spring托管的對象。

          它的param標簽的name屬性為beanName,value屬性的值與spring中bean

          的id值對應。

           -->

          <dwr>

              <allow>

                 <create javascript="userBiz" creator="spring">

                     <param name="beanName" value="userBiz" />

                 </create>

                 <convert converter="bean" match="edu.yzu.shops.entity.User" />

              </allow>

          </dwr>


          posted on 2011-11-16 01:16 Steven_bot 閱讀(545) 評論(0)  編輯  收藏 所屬分類: study logger


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 鲁山县| 西盟| 桂林市| 綦江县| 寿光市| 历史| 白朗县| 方正县| 望江县| 民丰县| 古田县| 安福县| 盐边县| 云安县| 秀山| 厦门市| 安远县| 潍坊市| 安图县| 墨玉县| 绵竹市| 涡阳县| 诸暨市| 定兴县| 长武县| 湄潭县| 定南县| 琼中| 磐安县| 留坝县| 安庆市| 龙州县| 壶关县| 昆明市| 上栗县| 溆浦县| 威宁| 苏尼特左旗| 黄冈市| 基隆市| 滦平县|