hot的學習筆記

          我是一只弱小的毛毛蟲,想像有一天可以成為強壯的挖土機, 擁有挖掘夢想的神奇手套。。。

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            8 隨筆 :: 0 文章 :: 1 評論 :: 0 Trackbacks

          我的評論

          如果調換兩個事務管理器在容器中的定義順序,如
          <tx:annotation-driven transaction-manager="transactionManagerY" />
          <tx:annotation-driven transaction-manager="transactionManagerX" />
          得到的結果
          methodX()事務生效測試結果 @Transactional
          ("transactionManagerX")
          @Transactional
          ("transactionManagerY")
          @Transactional
          ("transactionManagerZ")
          transactionManagerZ為未定義過的 @Transactional
          TestEntityServiceImpl(實際使用datasourceX) Y N N N
          AnotherTestEntityServiceImpl (實際使用datasourceY) N Y Y Y


          分析結果(其實源碼就可以反應出):容器指定一個默認的事務管理器
          1.當在@Transactional("xxx")中正確指定了需要使用的事務管理器時,事務控制正常。
          2.如果@Transactional指定了未定義過的事務管理器,spring以缺省默認的事務管理器來處理。(如果程序正好使用的是缺省事務管理器同一個數據源,事務控制將生效)。
          3.如果@Transactional不指定事務管理器,使用缺省。
          4.如果@Transactional指定了不匹配的事務管理器(實際用到的數據源和指定的事務管理器控制的數據源不一致),事務控制將失效.
          但是好像spring3.0(具體版本沒弄清)之前的Transactional標注不支持區分使用哪個事務管理器。3.0之后的版本Transactional增加了個string類型的value屬性來特殊指定加以區分。
          主站蜘蛛池模板: 平阴县| 赣榆县| 武陟县| 成都市| 扶绥县| 江安县| 衡山县| 镇康县| 淳化县| 商丘市| 屏山县| 定州市| 温泉县| 南皮县| 辽阳县| 朝阳市| 海淀区| 奈曼旗| 沿河| 高台县| 神木县| 色达县| 嵩明县| 甘洛县| 富源县| 安陆市| 遂昌县| 永善县| 黄山市| 泸西县| 含山县| 巴中市| 四平市| 尼木县| 朝阳市| 宁安市| 台前县| 南部县| 通渭县| 彰化市| 嫩江县|