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 阅读(1113) 评论(1)  编辑  收藏 所属分类: Spring

Feedback

# re: Professional Java Development with the Spring Framework学习笔记(2) - 声明式事务 2012-08-27 09:45 】普【】
【】】  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: