Spring、Hibernate、Struts

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            11 Posts :: 0 Stories :: 6 Comments :: 0 Trackbacks

          Spring的聲明式事務有以下幾種配置方法:

          1、ProxyFactoryBean/Transaction Interceptor

          2、TransactionProxyFactoryBean

          3、BeanNameAutoProxyCreator

          4、Source-Level Metadata Using Commons Attributes

          5、Source-Level Metadata Using J2SE 5.0 Annotations

          個人認為4和5第一次配置完成后,以后再增加新的bean時會比較簡單,但單單從配置文件上看不易理解。

          本人推薦使用2,配置也十分簡單,比較容易理解,利用維護人員的維護工作,在我做的項目中都是使用這種配置方式。

          另外最好每個模塊單獨一個配置文件,在web.xml中contextConfigLocation的param-value中全部加進來。這樣實際上就解決了使用2時產生的配置文件太大的問題。

          例子:

          dataAccess-hibernate.xml

          <!-- The DBCP DataSource -->
            
          <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 
                  destroy-method
          ="close">
              
          <property name="driverClassName">
                
          <value>${jdbc.driverClassName}</value>
              
          </property>
              
          <property name="url"><value>${jdbc.url}</value></property>
              
          <property name="username"><value>${jdbc.username}</value></property>
              
          <property name="password"><value>${jdbc.password}</value></property>
            
          </bean>

           
          <!-- The transactionmanager to use for regular non JTA datasource -->
            
          <bean id="transactionManager"
              class
          ="org.springframework.jdbc.datasource.DataSourceTransactionManager">
              
          <property name="dataSource">
                
          <ref local="dataSource"/>
              
          </property> 
            
          </bean>


          ticket-service.xml (ticket模塊)
          <!-- Transactional proxy and the primary business object -->
            
          <bean id="ticket.proxy" 
             class
          ="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
              
          <property name="transactionManager"><ref bean="transactionManager"/></property>
              
          <property name="target">
                
          <ref local="ticket.service"/>
              
          </property>
              
          <property name="transactionAttributes">
                
          <props>
                  
          <prop key="get*">PROPAGATION_SUPPORTS,readOnly</prop>
                  
          <prop key="allocate*">PROPAGATION_REQUIRED</prop>
                
          </props>
              
          </property>
            
          </bean>  
             
             
          <!-- The Service class -->
             
          <bean id="ticket.service" class="org.springframework.prospring.ticket.service.BoxOfficeImpl">
                  
          <property name="boxOfficeDao">
                    
          <ref local="ticket.dao"/>
                  
          </property> 
                
          </bean>

             
            
          <!-- The DAO class -->
            
          <bean id="ticket.dao" class="org.springframework.prospring.ticket.dao.jdbc.JdbcBoxOfficeDao">
              
          <property name="dataSource">
                
          <ref local="dataSource"/>
              
          </property> 
            
          </bean>


          web.xml

          <context-param>
            
          <param-name>contextConfigLocation</param-name>
            
          <param-value>/WEB-INF/dataAccess-jdbc.xml   /WEB-INF/conf/ticket-services.xml </param-value>
           
          </context-param>


          這是本人在項目中采取的配置。proxy注入service,service注入dao,配置簡單明了,如果一個模塊中有多個Service類,可以依次添加即可。
          posted on 2005-10-14 11:20 ahgf 閱讀(1124) 評論(1)  編輯  收藏 所屬分類: Spring

          Feedback

          # re: Professional Java Development with the Spring Framework學習筆記(2) - 聲明式事務 2012-08-27 09:45 】普【】
          【】】  回復  更多評論
            

          主站蜘蛛池模板: 额尔古纳市| 太保市| 星座| 凤山市| 普兰店市| 勃利县| 望都县| 老河口市| 衡水市| 锦屏县| 根河市| 蓬莱市| 江陵县| 景谷| 敖汉旗| 闵行区| 舟山市| 富阳市| 望都县| 梨树县| 阿勒泰市| 渭源县| 古浪县| 荣昌县| 义马市| 延吉市| 库尔勒市| 梁河县| 武宁县| 新野县| 昭平县| 灌云县| 蒙自县| 大城县| 兰溪市| 平阴县| 罗平县| 靖边县| 和田市| 巨鹿县| 本溪市|