`
shenshuibomb
  • 浏览: 25294 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Spring 注解配置事务中所遇到的一点问题

阅读更多

本身使用Spring中的注解管理事务是一件非常简单的事情,但还是在实际项目中遇到了一点问题,现将其记录下来, 也希望

能和明白的人士进行探讨。

一. 首先就是在Spring 配置文件中进行配置

<bean id =" transactionManager "
class =" org.springframework.jdbc.datasource.DataSourceTransactionManager " >
< property name =" dataSource " ref =" dataSource " />
</ bean >

< tx:annotation-driven transaction-manager =" transactionManager " />

二.然后就是在类或接口中的方法进行注解操作

如:

此处为DAO接口

@Transactional(propagation=Propagation.REQUIRED)
public interface LogicDao{

@Transactional(propagation=Propagation.REQUIRED)
public int[] insertQuestion(QuestionA questionUser,QuestionB questionNaire);

@Transactional(propagation=Propagation.REQUIRES_NEW)
public boolean insertQuestion2(QuestionA questionUser,QuestionquestionNaire);

}

然后我们在service层中调用dao

@Transactional(propagation=Propagation.REQUIRED)
public int[] insertQuestion(QuestionUser questionUser,QuestionNaire questionNaire)
{
   Object obqe;
   Object obqu;
  int[] seqs = new int[2];
obqe = this.getQdao().insertQeuestion(questionNaire);
obqu = this.getQdao().insertQeuestionUser(questionUser);

if(obqu!=null && obqe!=null)
{
seqs[0]=(Integer)obqe;
seqs[1]=(Integer)obqu;
return seqs;
}
else
{
return null;
}
}
此时,spring管理事务就算是OK了,原理没有说,这里只讲应用。

 但是我在项目中遇到了一个问题

   我在声明dao中的方法throws Exception 如下

@Transactional(propagation=Propagation.REQUIRED)
public interface LogicDao{

@Transactional(propagation=Propagation.REQUIRED)
public int[] insertQuestion(QuestionA questionUser,QuestionB questionNaire) throws Exception;

@Transactional(propagation=Propagation.REQUIRES_NEW)
public boolean insertQuestion2(QuestionA questionUser,QuestionquestionNaire)throws Exception;

}

然后重新在service层中的insertQuestion方法中对其进行try catch中进行捕获,此时发现spring中的事务就不起作用了。

现在我也没有查出是为什么,还是对spring理解的不深,如何有明白的人留个脚印。

分享到:
评论

相关推荐

    关于SpringMyBatis纯注解事务不能提交的问题分析与解决

    然而,在实际开发过程中,可能会遇到使用Spring MyBatis纯注解方式配置的事务无法正常提交的情况,尤其是在使用Oracle数据库时更为常见。 ### 问题描述 本文主要针对在Spring + MyBatis环境下,或使用Spring JDBC...

    Spring自定义切面事务问题

    3. **解决方案:正确配置事务切面的顺序** - 在Spring中,事务管理器本身也可以被看作是一种切面,它负责在合适的时候开启和提交事务。因此,当有多个切面需要被应用到同一个方法上时,切面的执行顺序就显得尤为...

    spring3hibernate4注解式事务管理

    例如,在上述的`UserService`中,即使我们在`userRepository.save(user)`操作中遇到问题,由于事务管理的存在,整个操作都会被回滚,不会影响到数据库的其他数据。 总结来说,"spring3hibernate4注解式事务管理"是...

    解决osgi spring 事务配置问题

    通过Spring DM,你可以像在非OSGi环境中一样配置事务管理。 4. **注意类加载器的兼容性**:确保你的事务管理类和相关的AOP库能在所有相关bundle中被正确识别和加载。 5. **配置MetaType信息**:在DS中,你需要为事务...

    spring 简单实例 事务回滚

    1. 创建Spring配置文件:在XML配置文件(如`applicationContext.xml`)中,我们需要配置事务管理器。这通常是一个`PlatformTransactionManager`的实现,如`DataSourceTransactionManager`,它基于JDBC来管理事务。 ...

    Spring使用XML配置声明式事务

    在Spring框架中,声明式事务管理是实现事务处理的一种高效且灵活的方式,它允许开发者通过XML配置或注解来定义事务边界,而无需在业务逻辑代码中显式地调用开始、提交或回滚事务的方法。这篇博文"Spring使用XML配置...

    spring mvc+hibernate实现事务管理(配置文件版)

    本项目是关于如何使用Spring MVC与Hibernate结合来实现事务管理的实践教程,通过MyEclipse自动生成所需的包和配置文件。这里将详细讲解这一过程,以及涉及到的关键知识点。 首先,Spring MVC作为Spring框架的一部分...

    spring事务案例分析.zip

    7. **案例分析**:"SPRING事务管理案例分析.docx"很可能包含了具体的项目实例,详细讲解了如何在Spring项目中配置和使用事务管理,以及如何解决实践中遇到的问题。而"studyspring"可能是源代码目录,包含了实现这些...

    Spring 事务 (二) Spring 声明式事务 配置

    5. **事务配置**:在Spring XML配置文件中,我们需要配置事务管理器,例如DataSourceTransactionManager用于JDBC事务,HibernateTransactionManager用于Hibernate事务。同时,还需要开启事务代理,如下所示: ```...

    struts2和spring3注解整合问题

    然而,在整合过程中,可能会遇到注解找不到action的问题,这通常是配置或理解上的误区导致的。下面我们将详细探讨这个问题及其解决方案。 1. **Struts2和Spring3的整合原理** - **Struts2**:主要负责处理HTTP请求...

    Spring事务管理失效原因汇总

    为了确保事务管理的有效性,开发者应该理解并正确使用@Transactional注解,合理配置事务管理的相关参数,注意异常的处理,并避免在事务管理失效的情况下编写业务逻辑代码。在开发过程中,进行充分的测试,尤其是集成...

    spring事务详解

    3. 声明式事务管理:利用Spring AOP的特性,Spring支持声明式事务管理,即可以在配置文件或注解中声明事务属性,这使得事务管理更加灵活和方便。 Spring的事务管理还提供了强大的事务传播行为和隔离级别配置,...

    Spring事务管理A方法内部调用B方法的回滚问题测试代码

    编程式事务管理使用TransactionTemplate或PlatformTransactionManager接口手动管理事务,而声明式事务管理则是通过在XML配置或注解中定义事务规则。在这个例子中,我们可能关注的是声明式事务管理,因为它是Spring中...

    Spring aop、jdbc和事务tx练习

    在IT领域,Spring框架是Java开发中的核心工具之一,它为构建高质量的、可维护的、松耦合的应用程序...在实践中,你可能会遇到的问题包括事务传播行为、异常回滚规则、事务隔离级别等,这些都是进一步学习和研究的方向。

    springAop事务配置

    以上就是关于Spring AOP配置事务管理的基本介绍,通过注解和非注解方式,我们可以灵活地在应用程序中管理事务,确保数据的一致性和完整性。实际开发中,应根据项目需求和团队习惯选择合适的方式。

    spring,struts,hibernate,事务配置

    在Spring的配置文件中,我们通常会定义一个`&lt;tx:annotation-driven&gt;`元素来启用基于注解的事务管理。例如: ```xml ``` 这里,`transactionManager` 是你定义的事务管理器bean的ID,通常是`...

Global site tag (gtag.js) - Google Analytics