<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                直接給出示例 ~~~java // the service class that we want to make transactional @Transactional public class DefaultFooService implements FooService { Foo getFoo(String fooName); Foo getFoo(String fooName, String barName); void insertFoo(Foo foo); void updateFoo(Foo foo); } ~~~ 把這個service添加到spring的xml配置中即可. >` @EnableTransactionManagement`注解添加到`@Configuration`類中即等效xml的bean配置. > :-: @Transactional注解方法的可見性 當使用代理時,要吧 @Transactional注解用在public的方法上.如果用在其他可見范圍的方法,不會有錯誤,但是也不會應用事務的配置.如果一定要這么做,參考AspectJ . `@Transactional`可以放在接口,接口方法,類,類方法上.但只用`@Transactional`不足以啟動事務的行為.`@Transactional`注解只是簡單的元數據,被基礎的構件在運行時感知事務,配置事務的行為.在以前的例子中`<tx:annotation-driven/>`元素開關事務的行為. >spring建議在具體類和方法上使用`@Transactional`,而不要在接口上. >如果類的代理是基于類的,那么加在接口上的`@Transactional`就不會起作用. >`@EnableTransactionManagement` 和 `<tx:annotation-driven/>` 僅僅在相同應用級別下查找`@Transactional`注解的bean.也就是說,如果為了`DispatcherServlet`在`WebApplicationContext`上添加驅動注解,只會在controller層查找`@Transactional`,而不會在service層查找. > 事務是有優先級的,如下示例,`DefaultFooService `類級別的事務是只讀的,但是在類方法`updateFoo(Foo) `上的事務級別是高于類級別的 ~~~java @Transactional(readOnly = true) public class DefaultFooService implements FooService { public Foo getFoo(String fooName) { // do something } // 優先級更好 @Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW) public void updateFoo(Foo foo) { // do something } } ~~~ ## @Transactional settings 默認配置 * 傳播行為 `PROPAGATION_REQUIRED` * 隔離級別` ISOLATION_DEFAULT` * 事務 `read/write`. * 超時是依賴系統環境的,或者不支持的 * 任何`RuntimeException `回滾,未檢查異常不回滾 | 屬性 | 類型 | 說明 | | --- | --- | --- | | value | String | 指明使用哪種事務管理 | | propagation | enum: Propagation | 設置傳播行為 | | isolation | enum: Isolation | 設置隔離級別,只有在傳播行為是 REQUIRED 或 REQUIRES_NEW.才有效 | | timeout | int 單位秒 | 設置事務超時時間,只有在傳播行為是 REQUIRED 或 REQUIRES_NEW.才有效 | | readOnly | boolean | 事務的讀寫屬性, 只有在傳播行為是 REQUIRED 或 REQUIRES_NEW.才有效 | | rollbackFor | Array of Class objects,Throwable的派生類 | 導致回滾的異常 | | rollbackForClassName | Array of class names. Throwable的派生類 | 導致回滾的異常類名稱 | | noRollbackFor | Array of Class objects,Throwable的派生類 | 不回滾的異常 | | noRollbackForClassName | Array of class names. Throwable的派生類 | 不回滾的異常類名稱 | 目前,您無法明確控制事務的名稱,其中“name”表示將在事務監視器中顯示的事務名稱(如果適用)(例如,WebLogic的事務監視器)和日志記錄輸出。 對于聲明性事務,事務名稱始終是完全限定的類名+“.” +事務建議類的方法名稱。 例如,如果BusinessService類的handlePayment(..)方法啟動了事務,則事務的名稱將為:`com.foo.BusinessService.handlePayment`。 ## Multiple Transaction Managers with @Transactional 當一個應用有多個事務管理時,屬性value可以指定使用哪種`PlatformTransactionManager `,可以指定bean的名稱或者是qualifier 的值 如下 ~~~java public class TransactionalService { @Transactional("order") public void setSomething(String name) { ... } @Transactional("account") public void doSomething() { ... } } ~~~ 結合下面的聲明事務 ~~~xml <tx:annotation-driven/> <bean id="transactionManager1" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> ... <qualifier value="order"/> </bean> <bean id="transactionManager2" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> ... <qualifier value="account"/> </bean> ~~~ ## Custom shortcut annotations 可自定義事務簡寫模式 ~~~java @Target({ElementType.METHOD, ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Transactional("order") public @interface OrderTx { } @Target({ElementType.METHOD, ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Transactional("account") public @interface AccountTx { } ~~~ 上面的例子就可以重寫 ~~~java public class TransactionalService { @OrderTx public void setSomething(String name) { ... } @AccountTx public void doSomething() { ... } } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看