springboot 對新人來說可能上手比springmvc要快,但是對于各位從springmvc轉戰到springboot的話,有些地方還需要适應下,尤其是xml配置。我個人是比較喜歡注解xml是因為看着友善,查找友善,清晰明了。但是xml完全可以使用注解代替,今天就扒一扒springboot中事務使用注解的玩法。
springboot 之 xml事務
springboot 啟動類如下:
啟動後即可開啟事務,不過項目裡導入了xml配置,如果不想導入xml配置,可以使用注解的方式。
springboot 之 注解事務
注解事務講解之前,需要先了解下spring建立代理的幾個類,在spring内部,是通過beanpostprocessor來完成自動建立代理工作的。beanpostprocessor接口的實作隻是在applicationcontext初始化的時候才會自動加載,而普通的beanfactory隻能通過程式設計的方式調用之。根據 比對規則的不同大緻分為三種類别:
a、比對bean的名稱自動建立比對到的bean的代理,實作類beannameautoproxycreator
b、根據bean中的aspectj注解自動建立代理,實作類annotationawareaspectjautoproxycreator
c、根據advisor的比對機制自動建立代理,會對容器中所有的advisor進行掃描,自動将這些切面應用到比對的bean中,實作類defaultadvisorautoproxycreator
接下來開講注解開啟事務的方法:
需要在進行事物管理的方法上添加注解@transactional,或者偷懶的話直接在類上面添加該注解,使得所有的方法都進行事物的管理,但是依然需要在需要事務管理的類上都添加,工作量比較大,這裡隻是簡單說下,具體的可以google或者bing
component或configuration中bean的差別,有時間我會專門寫一篇來講解下
a.方式1,這裡使用component或configuration事務都可以生效
b.方式1,這裡使用component或configuration事務都可以生效
c.方式1,這裡使用component或configuration事務都可以生效
d.方式1,這裡使用component或configuration并不是所有事務都可以生效,例如configuration的時候如果打開注釋部分的而且不把代碼都移動到 defaultpointcutadvisor(),事物會失效,具體原因暫時不明,如果各位有明白的,可以指點我下。
簡單來說,springboot使用上述注解的幾種方式開啟事物,可以達到和xml中聲明的同樣效果,但是卻告别了xml,使你的代碼遠離配置檔案。