如果具有某些事務屬性的事務方法在具有不同事務屬性的同一個bean上調用方法,會發生什麼情況?用不同的事務屬性調用Spring Bean的方法?
回答
隨着春天nothin的標準事務配置會發生。從技術文檔(看看reference documentation聲明式事務管理的完整說明):
在代理模式(這是默認值),只有外部方法調用 進來通過代理被截獲。這意味着,即使被調用的方法標記爲 @Transactional,實際上,在目標對象中調用目標對象的另一種方法的自我調用在運行時也不會導致實際的 事務 。
如果您需要更改事務性行爲使用方法調用在同一豆你可以改變交易模式,AspectJ和使用編譯時間wieving(look here如何做到這一點)(傳播,只讀狀態等) 。但我從來沒有在實踐中這樣做過,只是爲了測試。通常它是足夠的默認事務設置。
@事務的readOnly的屬性有例外如下:
@Transactional(readOnly=true)
void methodA(){}
@Transactional
void methodB(){}
如果你這樣調用的方法,並使用Hibernate或其他ORM平臺:
methodA();
methodB();
將拋出只讀連接異常。
對不起,但你想說什麼呢? – dimas 2012-08-16 06:52:20
@Transactional(readOnly = true)將打開一個只讀連接,Spring不允許您通過SQL更新表,並表示連接是隻讀的。 – JackingLiu 2012-08-16 07:00:38
是的,但如果在methodA(..)中只能從數據庫中讀取一些數據而不修改它,那麼它就會正常工作。 – dimas 2012-08-16 07:03:16
- 1. 調用不bean屬性方法的FreeMarker
- 2. 方法,調用的Spring bean
- 3. Spring:沒有調用Bean init方法,它的屬性沒有值
- 4. Spring引用屬性bean的屬性
- 5. 事務性方法回滾中的Hibernate事務方法調用
- 6. Primefaces禁用屬性不調用Bean方法
- 7. 確定Spring Bean的可用屬性?
- 8. 調用Spring bean的
- 9. p:ajax不調用bean方法
- 10. Spring&Hibernate:非事務性服務方法
- 11. 是否可以在Spring中從非事務性方法調用事務性方法?
- 12. Spring集成調用多種方法並回應同一個bean
- 13. 在Spring集成中調用服務激活器vs bean方法
- 14. Spring Cache @Cacheable - 從同一個bean的另一個方法調用時不工作
- 15. Spring - 用新的屬性文件值替換bean屬性值
- 16. 如何從bean的方法訪問Spring託管屬性?
- 17. 從不同的類調用方法時python屬性錯誤
- 18. Spring配置通屬性引用bean
- 19. Spring/Grails - 使用新屬性重裝bean
- 20. Spring bean的DESTROY-METHOD屬性和web應用程序「prototype」d bean
- 21. 的Spring bean通過屬性接線初始化實例不同
- 22. 從e.PropertyName屬性調用屬性方法
- 23. Singleton bean:業務方法調用
- 24. Spring與不同事務管理器的嵌套事務
- 25. 使用屬性名稱中的變量調用bean屬性
- 26. 如何調用bean方法與被作爲屬性
- 27. Bean方法從動作屬性中隨機調用
- 28. spring bean可選屬性
- 29. Spring bean屬性定義
- 30. JSF Spring Bean集屬性
@Transactional的屬性是不同的,在你的情況? – Vikdor 2012-08-16 01:57:20
你能解釋你想達到的情景嗎? – 2012-08-16 05:33:32
相關:[與春季交易管理問題?](http://stackoverflow.com/questions/11950895) – 2012-08-16 07:11:38