【问题标题】:Global configuration in Spring annotational transactions?Spring注释事务中的全局配置?
【发布时间】:2014-08-22 18:10:58
【问题描述】:

我们使用带有注释性@Transactional 属性而不是XML 替代方案的Spring 事务。是否可以将某些服务方法指定为 XML 版本中声明的“只读”?

据我所知,在 XML 版本中,您可以指定方法和只读配置为:

      <tx:attributes>
        <!-- all methods starting with 'get' are read-only -->
        <tx:method name="get*" read-only="true"/>
        <tx:method name="find*" read-only="true"/>
        <!-- other methods use the default transaction settings (see below) -->
        <tx:method name="*"/>
      </tx:attributes>

但我想在注释服务中使用此配置。这可能吗?

【问题讨论】:

  • 我认为您无法将该 xml 转换为 @Transactional。该注释将放置在方法和/或类上,并且用法不同。您需要换一种思路:例如,如果您有一个包含许多get* 方法的类,那么您在类级别放置一个@Transactional(readOnly=true),然后对于您不想被读取的每个方法,您只需放置另一个@Transactional(readOnly=false)。此外,您可以将@Transactional 放在接口上,如果您可以为许多类创建通用接口,您可以在一个地方定义事务行为:在接口中。

标签: java spring spring-transactions spring-annotations


【解决方案1】:

我认为您不能将该 xml 转换为 @Transactional。该注解要放在方法和/或类上,用法不同。

您需要换个思路:例如,如果您有一个包含许多 get* 方法的类,那么您在类级别放置一个 @Transactional(readOnly=true),然后对于每个您不想成为 readOnly 的方法您放置另一个@Transactional(readOnly=false)。此外,您可以将@Transactional 放在接口上,如果您可以为许多类创建通用接口,您可以在一个地方定义事务行为:在接口中。

【讨论】:

  • 谢谢安德烈。它说,相关问题之一是可以完成的。检查链接 (stackoverflow.com/questions/2669329/…) 但不幸的是它对我不起作用。不幸的是,你的提议对我不起作用。因为我们已经有数百个服务类和方法。再次感谢
猜你喜欢
  • 1970-01-01
  • 2016-04-21
  • 2014-04-08
  • 2011-03-22
  • 2011-04-12
  • 1970-01-01
  • 2014-05-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多