通过spring注释进行交易 - 只读或不读?

mma*_*oka 1 spring transactions readonly

我的项目代码与此类似

@Transactional(readOnly = true)
public void tt() {
    dd();
}

@Transactional()
public void dd() {
    gg();
}

@Transactional(readOnly = true)
public void gg() {

}
Run Code Online (Sandbox Code Playgroud)

函数dd由其他只读事务函数使用,而不是只读函数.假设事务应该从执行tt扩展到gg - dd中的操作是否为只读事务?

pap*_*pap 6

在这个特定的例子中,你的问题没有实际意义.

dd()from 的调用tt()将不会通过代理边界,因此不会应用任何事务性建议dd()(因为它是在同一实例内的调用).与gg()来自的呼叫相同dd().因此,只有来自外部的调用tt()实际上是事务建议(在您的情况下,与readOnly=true),这将是将在整个调用链中使用的事务.

但是在一般情况下,请阅读@melihcelik暗示的文档 - 它解释了行为.