當通過xml配置Spring事務時,綁定接口或具體的事務類是否好用?我在想,我們應該爲映射到 事務處理的接口進行映射,但是我從Spring文檔中找到了這個接口: 「Spring團隊的建議是您只使用 @Transactional註釋來註釋具體類。Spring事務配置
請分享您的想法。
當通過xml配置Spring事務時,綁定接口或具體的事務類是否好用?我在想,我們應該爲映射到 事務處理的接口進行映射,但是我從Spring文檔中找到了這個接口: 「Spring團隊的建議是您只使用 @Transactional註釋來註釋具體類。Spring事務配置
請分享您的想法。
事務邊界是實現細節,因此它們應該通過實現而不是通過接口來指定。
例如,想象一下,在你需要使用編程式事務管理(TransactionTemplate
),而不是@Transactional
爲您的方法之一,一些複雜的情況。如果在接口級別有@Transactional
,則不可能。
接口是合同。交易性不是(通常)合同的一部分。這是一個實現細節。因此@Transactional屬於實現類,而不是在接口中。
比方說,我們不使用註釋,只有在通過XML宣佈交易。在這種情況下,我們可以使接口和類代理都正確嗎?哪一個更好?這是我的擔心。 – popcoder
@ user495939:正如axtavt所說,同樣的推理可以應用於XML聲明的事務。而不是類和接口,你有bean和類型。你可以認爲應用大致相同的規則。 –
@Transactional註解不是從接口繼承的,所以如果你使用代理的不同方法(如代理目標類=真或的AspectJ)你真正的方法不會交易。
見代理的AOP(標準交易註解) http://static.springsource.org/spring/docs/3.0.x/reference/aop.html#aop-understanding-aop-proxies
對不起,我進入@Transactional在我的問題。其實這是我從Spring文檔中提取的一部分。我的問題是關於通過xml聲明事務。那樣,我應該綁定接口還是實現類? – popcoder
@ user495939:這個推理也適用於xml。 – axtavt