1. 程式人生 > 其它 >spring <mvc:annotation-driven /> 和 <tx:annotation-driven />的區別

spring <mvc:annotation-driven /> 和 <tx:annotation-driven />的區別

annotation-driven 這樣的註解,其含義就是支援註解

一般根據字首 tx、mvc 等也能很直白的理解出來分別的作用:

<mvc:annotation-driven>: 支援mvc註解(Controller中可以使用MVC的各種註解,例如因為這個標籤建立了7個訊息轉換器HttpMessageConverter物件,Controller中可以使用使用@responsebody註解返回Object物件,否則只能返回String資料)
<tx:annotation-driven/>:就是支援事務註解的(@Transactional,在Service實現類裡寫@Transactional就可以啟用事物管理),有一個transaction-manager屬性用來指定使用哪個事務管理器

那麼我們是否就可以在程式中所有被spring管理的類上都可以使用@Transactional註解了呢,在Service上可以使用@Transactional 註解這個是肯定的了,那總有些人也想弄明白能否在Controller 使用?答案顯然是“不一定”的(與時間配置有關)

原因是:<tx:annoation-driven/>只會查詢和它在相同的應用上下檔案中定義的bean上面的@Transactional註解,如果你把它放在Dispatcher的應用上下文中,它只檢查控制器(Controller)上的@Transactional註解,而不是你services上的@Transactional註解。

所以,可以確定的是我們是可以在Controller上使用事務註解的,但是我們不推薦這樣做

原文連線:https://www.cnblogs.com/alice-cj/p/10417773.html