java - Spring注释事务中的全局配置?

标签 java spring spring-transactions spring-annotations

我们使用 Spring 事务使用注解的@Transactional 属性而不是 XML 替代品。是否可以将某些服务方法指定为 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)然后对于您不想成为 readOnly 的每个方法,您放置另一个 @Transactional(readOnly=false)。此外,您可以将 @Transactional 放在接口(interface)上,如果您可以创建许多类通用的接口(interface),则可以在一个地方定义事务行为:在接口(interface)中。

关于java - Spring注释事务中的全局配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25421540/

相关文章:

java - 在数据库中存储 BLOB Spring Hibernate 持久化

java - HTML5/Javascript 验证复选框提交 URL 重定向

java - 如果我们不扩展 Thread 或实现 Runnable,main() 怎么会是线程呢?

java - 使用 Controller 在 jsp 上显示错误消息

java - Spring 定义的映射将 bean 名称作为键而不是指定的键值

java - Spring 事务回滚

java - JPA存储库org.hibernate.LazyInitializationException : could not initialize proxy - no Session

grails - 在只读模式(FlushMode.MANUAL)中不允许进行写操作:

java - 生成动态 sql SELECT 语句

java - 数组在 Java 中是线程安全的吗?