spring--(26)事務傳播行爲

當一個事務方法(假定A)被另外一個事務方法(假定B)調用時,必須指定事務如何傳播。存在以下兩種狀況
1>該方法(A)繼續在現有事務(方法B的事務)中運行
2>新開啓一個事務,並在本身的事務中運行(獨立事務)
依賴於上篇文件類,這裏新增一個接口和類
//接口文件app

public interface Cashier {
	/**
	 * 一個用戶一次買多本書
	 */
	public void checkout(Integer userId,List<Integer> bookIds);
}

//接口實現類ide

@Service("cashier")
public class CashierImpl implements Cashier {
	@Autowired
	private BookShopService bookShopService;

	@Transactional
	@Override
	public void checkout(Integer userId, List<Integer> bookIds) {

		for (int bookId : bookIds) {
			bookShopService.purchase(userId, bookId);
		}
	}

}

測試類測試

public class TestTx {
	
	private ApplicationContext ctx;
	private Cashier cashier;
	
	{
		ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
		cashier = ctx.getBean(Cashier.class);
	}
	
	@Test
	public void testTransaction(){
		cashier.checkout(1000, Arrays.asList(1001,1002));
	}

}
相關文章
相關標籤/搜索