咱們都知道Spring 裏面的事務分爲併發
/** *支持當前事務,若是當前沒有事務,就新建一個事務。這是最多見的選擇 **/ int PROPAGATION_REQUIRED = 0; /** * 支持當前事務,若是當前沒有事務,就以非事務方式執行。 **/ int PROPAGATION_SUPPORTS = 1; /** *支持當前事務,若是當前沒有事務,就拋出異常。 ** int PROPAGATION_MANDATORY = 2; /** *新建事務,若是當前存在事務,把當前事務掛起。 **/ int PROPAGATION_REQUIRES_NEW = 3; /** *以非事務方式執行操做,若是當前存在事務,就把當前事務掛起。 **/ int PROPAGATION_NOT_SUPPORTED = 4; /** *以非事務方式執行,若是當前存在事務,則拋出異常。 **/ int PROPAGATION_NEVER = 5; /** *支持當前事務,若是當前事務存在,則執行一個嵌套事務,若是當前沒有事務,就新建一個事務。 **/ int PROPAGATION_NESTED = 6;
當一個事務中嵌套不少事務的時候,容易出現問題 產品中執行一個操做,往表裏面插入一行數據,在後面回對這個數據查詢檢索,若是咱們對於檢索的方法配置了 NOT_SUPPORTED ,那麼就會出現永遠查詢不到剛插入的數據。因此針對配置 聲明式事務 建議 readonly 的採用 SUPPORTS 其餘的使用 REQUIRED,若是一些事務會鎖表,並且會有高併發,咱們應該採用 REQUIRES_NEW高併發