`
TreasureNow
  • 浏览: 20779 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

spring 事物配置

 
阅读更多
	private UserDAO userDAO;
	public void setUserDAO(UserDAO userDAO) {
		this.userDAO = userDAO;
	}
	
	/**
	 * 异常只有抛出事物才有回滚机制
	 */
	public void saveUser(User user) throws Exception{
		userDAO.save(user);
	}
 
	public void save(User transientInstance) throws Exception {
		log.debug("saving User instance");
		try {
			getHibernateTemplate().save(transientInstance);
			int i = 5/0;
			log.debug("save successful");
		} catch (Exception re) {
			re.printStackTrace();
			log.error("save failed", re);
			throw new Exception();
		}
	}
 
<?xml version="1.0" encoding="UTF-8"?>
<beans
	xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:p="http://www.springframework.org/schema/p"
 	xmlns:aop="http://www.springframework.org/schema/aop"
 	xmlns:tx="http://www.springframework.org/schema/tx"             
  	xsi:schemaLocation="http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
	http://www.springframework.org/schema/aop 
	http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
    http://www.springframework.org/schema/tx 
    http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
    
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"  destroy-method="close">
		<property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"></property>
		<property name="url" value="jdbc:sqlserver://localhost:1433;databaseName=plusoft_test"></property>
		<property name="username" value="sa"></property>
		<property name="password" value="admin"></property>
		<property name="defaultAutoCommit" value="false"/>
		<property name="maxActive" value="150" />  
        <property name="maxIdle" value="100" />  
        <property name="maxWait" value="60000" />  
        <property name="minIdle"  value="5" />  
        <property name="testOnBorrow" value="true"/>  
        <property name="testWhileIdle" value="true"/>   
	</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.SQLServerDialect
				</prop>
			</props>
		</property>
		<property name="mappingResources">
			<list>
				<value>com/ssh2/bean/User.hbm.xml</value>
			</list>
		</property>
	</bean>
	
	<bean id="hibernateDaoTemplate" abstract="true">
        <property name="sessionFactory">
            <ref bean="sessionFactory" />
        </property>
    </bean>
    
    <!-- Dao 定义  -->
	<bean id="userDAO" class="com.ssh2.dao.UserDAO" parent="hibernateDaoTemplate" ></bean> 
	
	<!-- Service 定义 -->
	<bean id="userService" class="com.ssh2.service.impl.UserServiceImpl"  autowire="byName">   
       <property name="userDAO" ref="userDAO"></property>   
    </bean> 
   
   <bean id="userAction" class="com.ssh2.action.UserAction">   
       <property name="userService" ref="userService"></property>   
   </bean>   
   
    <!-- Hibernate Transaction Interceptor Definition -->
    <bean id="hibernateTransactionInterceptor"
        class="org.springframework.transaction.interceptor.TransactionInterceptor"
        parent="transactionIntercetorTemplate">
        <property name="transactionManager">
            <bean id="hibernateTransactionManager"
                class="org.springframework.orm.hibernate3.HibernateTransactionManager">
                <property name="sessionFactory">
                    <ref bean="sessionFactory" />
                </property>
            </bean>
        </property>
    </bean>

    <!-- transction Intercetor's Template -->
    <bean id="transactionIntercetorTemplate" abstract="true">
        <property name="transactionAttributes">
            <props>
                <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
                <prop key="is*">PROPAGATION_REQUIRED,readOnly</prop>
                <prop key="check*">PROPAGATION_REQUIRED,readOnly</prop>
                <prop key="insert*">PROPAGATION_REQUIRED</prop>
                <prop key="update*">PROPAGATION_REQUIRED</prop>
                <!-- 事物回滚 -->
                <prop key="delete*">PROPAGATION_REQUIRED,-Exception</prop>
                <prop key="save*">PROPAGATION_REQUIRED,-Exception</prop>
                <prop key="*">PROPAGATION_REQUIRED</prop>
            </props>
        </property>
    </bean>

    <!-- 定义自动代理生成器-->
    <bean id="autoProxyCreator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
        <property name="interceptorNames">
            <list>
                <idref bean="hibernateTransactionInterceptor" />
            </list>
        </property>
        <property name="beanNames">
            <value>*Service</value> 
        </property>
    </bean>
</beans>
 
分享到:
评论

相关推荐

    Spring事物配置的五种模式

    ### Spring事务配置的五种模式详解 在Spring框架中,事务管理是十分重要的特性之一,它可以帮助开发者确保数据的一致性和完整性。对于不同的业务场景,Spring提供了多种事务配置的方式,以便于灵活应对各种需求。...

    Spring 事物配置的方式

    Spring 事务配置的五种方式 ,讲述了Sping 事物配置的全过程

    spring中事物配置

    接下来,我们来一步步配置Spring中的声明式事务管理: 1. **配置事务管理器**:在`applicationContext.xml`中,你需要声明一个事务管理器。对于大多数数据库,如MySQL,你可以使用`PlatformTransactionManager`的...

    spring的5中事物配置 介绍spring的5中事物配置

    Spring 框架提供了多种事务配置方式,这些配置方法主要基于Spring的AOP(面向切面编程)来实现事务管理。下面将详细介绍Spring中的五种事务配置方式。 1. **基于代理的事务管理(Proxy-based Transaction Management...

    spirn的事物配置详解与webservices案例

    1. Spring事物配置详解: 在Spring框架中,事务管理是核心功能之一,它允许开发者以声明式或编程式的方式来管理事务。声明式事务管理通过在XML配置文件或注解中定义事务边界,使得事务处理更加简洁。例如,可以使用...

    spring+jdbc

    在"spring事物配置"中,Spring提供了声明式事务管理,这使得开发者无需在代码中手动处理事务的开始、提交、回滚等细节,而是通过配置来定义事务边界,极大地提升了代码的可读性和可维护性。 Spring JDBC模块是...

    spring事物管理配置的5种方式

    本文将详细介绍Spring事务管理配置的五种方式,帮助你更好地理解和掌握这一关键概念。 首先,Spring事务管理通常涉及三个主要部分: 1. **DataSource**:这是数据库连接的来源,负责提供与数据库交互的资源。例如...

    spring事物和rabbitMQ的例子

    在"spring的2个数据源的配置"中,这意味着系统可能需要处理来自两个不同数据源的数据,例如一个用于主业务数据,另一个用于日志或审计记录。Spring允许我们为每个数据源配置单独的事务管理器,这样可以独立控制各自...

    spring 整合hibernate的事物配置.pdf

    spring 整合hibernate的事物配置

    Spring声明式事务配置模板2.x

    Spring 2.x版本的声明式事务配置模板是开发者常用的一种方式,它通过AOP(面向切面编程)实现事务的自动管理,使得开发者无需在业务代码中显式调用事务开始、提交或回滚等操作。下面我们将详细探讨Spring 2.x的声明...

    spring配置事物的5种方式

    本文将详细介绍SSH(Spring、Struts、Hibernate)框架整合时,Spring配置事务的五种方式。首先,我们要理解Spring事务配置的基本组成部分:DataSource、TransactionManager和代理机制。 1. **DataSource**:这是...

    spring配置方法

    spring 配置方法,xml文件,爱好ssh框架的通知们来把,spring配置事物管理,配置数据源

    spring分布式事务配置详解附源码

    spring分布式配置详解,并有testng测试报告, 公司封了端口,下载后,把后缀名改为rar就行了

    spring的事务管理配置

    spring的事务管理配置详解.txt详细的描述了如何配置spring的事物。

    spring事物的五种配制方法

    ### Spring事务的五种配置方法详解 #### 一、引言 在软件开发过程中,事务管理是确保数据一致性的重要手段之一。Spring框架提供了强大的事务管理功能,能够方便地与多种数据库交互,支持不同的数据访问技术如JDBC、...

    事物管理配置文件.txt

    标题:事物管理配置文件 描述:本篇详细解析了在SSH(Struts+Spring+Hibernate)框架整合过程中,Spring配置事务管理的具体实现方法。通过深入分析XML配置文件中的bean定义,我们将逐步理解如何通过Spring来管理和...

    Spring事务管理Demo

    1. 配置事务管理器:在Spring的XML配置文件中,根据数据库类型(如JDBC、Hibernate、MyBatis等)配置相应的事务管理器。 2. 开启事务:使用`@Transactional`注解标记需要在事务中执行的方法。 3. 业务逻辑:在事务中...

    事物简单总结(偏向Spring事物)

    Spring事务管理的配置通常在XML配置文件中完成,如`&lt;tx:annotation-driven&gt;`元素启用基于注解的事务管理,并指定事务管理器。另外,Spring还支持Java配置方式,通过@Configuration和@EnableTransactionManagement...

    第十四章 Spring4 切面事物与事物通知与传播行为

    本章将详细探讨Spring4中的切面事务处理、事物通知以及传播行为。 一、切面编程(AOP) 切面编程是Spring框架的一大特色,它允许开发者将关注点如日志记录、事务管理等从主业务逻辑中分离出来,形成独立的模块,即...

    spring事物管理

    在Spring 3.0之后,可以通过Java配置类替代XML配置。使用`@EnableTransactionManagement`注解开启事务管理,并使用`@Transactional`注解来标记事务边界。 5. **使用PlatformTransactionManager接口**: Spring...

Global site tag (gtag.js) - Google Analytics