spring 2.5 新加入的bean 没有事务管理

2019-03-25 13:43|来源: 网路

  今天很郁闷,就是这个spring 的事务 ,我使用 声明式事务处理

 <tx:advice id="txadvice" transaction-manager="transactionManager">
	  <tx:attributes>
	     <tx:method name="add*" propagation="REQUIRED" rollback-for="java.sql.SQLException"/>
	     <tx:method name="update*" propagation="REQUIRED" rollback-for="java.sql.SQLException"/>
	     <tx:method name="delete*" propagation="REQUIRED" rollback-for="java.sql.SQLException"/>
	     <tx:method name="get*" read-only="true"/>
	     <tx:method name="save*" propagation="REQUIRED" rollback-for="java.sql.SQLException"/>
	  </tx:attributes>
	</tx:advice>

<aop:config>

	   <aop:pointcut id="unsteadyPointCut" expression="execution(* com.xyz.service.unsteady..*(..))" />
	  <aop:advisor advice-ref="txadvice" pointcut-ref="unsteadyPointCut"/>
	</aop:config>

   通过xml的配置知道,我是对 包名为 com.xyz.service.unsteady下的类中的 add* , update* ,delete* , get* ,save* 等方法进行事务管理的,但是我新添加了一个类在这个包下 并且方法名也是这样匹配的。但是 就是不对我这类中的方法进行事务管理 ,导致我删除操作不行 。

    在控制台上也打印了sql语句。就是不删除 。我认为是事务没有开启导致,而且在spring的配置文件里的提示也没有我这个方法有事务管理。这个怎么解决呢

  望解答。

相关问答

更多
  • 有难同当,有福同享! 有一条不执行就都不执行,都可以执行的话就执行 晕,数据库执行操作的时候不得commit一下才会成功嘛,事务就是吧commit放到两条执行语句下面了,如果都成功了,执行commit,有一条出错,就抛异常,可以写成个代码样式: try{ sql1; sql2; commit; }catch(Exception e){ }
  • spring 3 的文档说 的 rollback-for 和 no-rollback-for 属性都没有默认值,那没有添加 rollback-for 的异常列表的话,那你知道当异常出现时 Spring 是回滚了事务还是提交了事务啊? 我没有实际使用过 Spring 的事务管理,不过从我在 EJB 2.0 声明式的事务的使用过程看,声明式的事务定义了在碰到哪些异常时应该自动回滚事务,哪些异常直接提交了,像 EJB 2.0 是说凡是系统异常(包括RuntimeException 及其 ...
  • 从诞生之初,Spring框架就坚守它的宗旨:简化企业级应用开发,同时给复杂问题提供强大的、非侵入性解决方案。一年前发布的Spring2.0就把这些主题推到了一个新的高度。XMLnbsp;Schema的支持和自定义命名空间的使用大大减少了基于XML的配置。使用Java5及更新版本java的开发人员如今可以利用植入了像泛型(generic)和注解等新语言特性的Spring库。最近,和AspectJ表达式语言的紧密集成,使得以非侵入方式添加跨越定义良好的Spring管理对象分组的行为成为可能。新发布的Spring ...
  • 事务在实际开发中会有遇到,但个人觉得其实许多场景下完全可以不需要事务的;另外,尤其在面试的时候,会经常问你事务的问题。 Spring 的事务你需要了解: 1. 声明式事务(也就是需要在配置文件中配置,或者注解) 2. 编程式事务 (需要你在代码中控制事务的开始、提交、回滚) 大概了解一下,其实不难。
  • 在我看来,你可以通过遵循Spring在org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(Object,TransactionDefinition)中的做法,对当前应用程序进行最小的更改。 详细而言,我认为以下内容应该有效: 在GenericAction上,从数据源获取连接(正如您已经完成的那样) 通过其holder与当前数据源绑定连接:TransactionSynchronizationManager.bindR ...
  • 最后我用这个bean解决了我的问题: @Bean @Scope(value=WebApplicationContext.SCOPE_REQUEST, proxyMode=ScopedProxyMode.TARGET_CLASS) public PlatformTransactionManager txManager(SessionInfo sessionInfo, DataSourceManager dsManager) { return dsManager.ge ...
  • 从Spring参考2.5: 使用代理时,@ @Transactional注释只能应用于具有公共可见性的方法。 如果您使用@Transactional注释对protected,private或package-visible方法进行注释,则不会引发任何错误,但注释方法将不会显示已配置的事务设置。 所以Spring忽略了非公开方法的@Transactional注释。 也, 在代理模式(这是默认值)中,只有通过代理进入的“外部”方法调用将被截获。 这意味着“自我调用”,即目标对象中调用目标对象的其他方法的方法,在运 ...
  • 这是注释的一个注意事项......您的课程不可重复使用! 如果你想用XML配置你的交易,如果可能的话。 假设你使用XML配置:如果它没有消耗昂贵的资源,你可以创建另一个bean2实例来使用你指定的代码。 也就是说,您可以像上面指定的那样配置一个,并且可以配置一个没有回滚的异常。 This is one of the caveats of annotations... your class is not reusable! If you'd configure your transactions in the ...
  • 交易经理和Websphere: 提供事务管理器时,Websphere不使用典型的jndi标准。 Spring通过提供可用于查找websphere事务管理器的org.springframework.transaction.jta.WebSphereUowTransactionManager来解决此问题。 数据源和隔离级别 您通常无法更改数据源的隔离级别,并且我知道从websphere连接到DB2数据库(它在数据源配置中设置为参数)时不能更改它。 allowCustomIsolationLevels标志允许您为 ...
  • 你有回滚 - 为"throwable"而不是"Throwable". PS不确定您应该使用REQUIRES_NEW作为默认策略。 更新 :来自DataSourceTransactionManager文档 需要应用程序代码来通过DataSourceUtils.getConnection(DataSource)而不是标准的J2EE样式的DataSource.getConnection()调用来检索JDBC连接。 诸如JdbcTemplate之类的Spring类隐式使用此策略。 如果不与此事务管理器结合使用,则D ...