我做了一个测试:
-------- Bean A ---------------
@Transactional
public void methodA(){
//some code
//set or get value in/from DB for example
otherSpringBean.methodB();
}
-------- Bean B ---------------
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void methodB() {
// some code insert into DB
}
我使用hikaricp作为连接池,我设置了以下hikari params:
min idle = 1 connection
max active = 1 connection
我总是只有一个连接。
当我运行测试时(只需调用methodA()
),我会超时(默认为30秒):methodB无法建立连接。
Spring文档说"传播REQUIRES_NEW"
创建一个新事务,暂停当前事务(如果有) 存在。
问题:为什么我的第一笔交易没有被暂停?由methodA()
打开的交易应暂停,并且methodB()
的连接可用。