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 閱讀(1123) 評論(1)  編輯  收藏 所屬分類: Spring

          Feedback

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

          主站蜘蛛池模板: 阳新县| 南康市| 耿马| 阳谷县| 台前县| 福贡县| 长汀县| 昌都县| 镶黄旗| 天峨县| 皮山县| 宜春市| 祁阳县| 来宾市| 澄迈县| 井研县| 昆明市| 南川市| 浠水县| 桐柏县| 黎平县| 赤壁市| 绍兴县| 交城县| 乐东| 澄江县| 洞头县| 哈尔滨市| 静宁县| 五峰| 邵阳县| 鄂伦春自治旗| 赣州市| 元阳县| 四子王旗| 临沭县| 临颍县| 麻江县| 太白县| 夏河县| 深泽县|