?
前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。
?1.?<tx:method name="insert*" propagation="REQUIRED" />中name的值是ServiceImpl中各個要加入事物管理的方法的方法名。
?
<!-- 事務管理: Spring聲明式事務管理 。spring默認的事務隔離級別是用的數據庫的默認事務隔離級別,不同數據庫級別也不盡相同。使用事務,要引入aop和tx的命名空間 :即文件頭第4行。(開啟注解事務,使用時在方法上加上注解@Transactional(...)即可 )--><!-- 事務管理器 --><bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource" /></bean><!-- 通知傳播行為 --><tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes><tx:method name="insert*" propagation="REQUIRED" /><tx:method name="delete*" propagation="REQUIRED" /><tx:method name="upd*" propagation="REQUIRED" /><!-- 只讀表示對數據的操作是讀取,報異常后不用回滾(不是只讀的數據出異常,事務會回滾)。 --><tx:method name="select*" propagation="SUPPORTS" read-only="true" /><tx:method name="get" propagation="SUPPORTS" read-only="true" /></tx:attributes></tx:advice><!-- 配置事務切入點 --><aop:config><aop:pointcut id="servicePointcut" expression="execution(* com.service.impl..*ServiceImpl.*(..))"/><aop:advisor advice-ref="txAdvice" pointcut-ref="servicePointcut"/></aop:config>
?
?
?
2. ?盡量把邏輯操作代碼寫到Service中,controller是沒有納入spring的事務管理的。出現異常不會回滾。
?
?
3. 相關說明:
?
??
spring中PROPAGATION類的事務屬性詳解
? ? PROPAGATION_REQUIRED:?
? ? 支持當前事務,如果當前沒有事務,就新建一個事務。這是最常見的選擇。?
? ? PROPAGATION_SUPPORTS: ?
? ? 支持當前事務,如果當前沒有事務,就以非事務方式執行。?
? ? PROPAGATION_MANDATORY: ??
? ? 支持當前事務,如果當前沒有事務,就拋出異常。?
? ? PROPAGATION_REQUIRES_NEW:?
? ? 新建事務,如果當前存在事務,把當前事務掛起。
? ? PROPAGATION_NOT_SUPPORTED:
? ? 以非事務方式執行操作,如果當前存在事務,就把當前事務掛起。?
? ? PROPAGATION_NEVER: ? ? ??
? ? 以非事務方式執行,如果當前存在事務,則拋出異常。?
? ? PROPAGATION_NESTED: ?
? ? 支持當前事務,如果當前事務存在,則執行一個嵌套事務,如果當前沒有事務,就新建一個事務。
?
?
??
??
??
??
??
?
?