springMVC包掃描問題


為什么@COntroller要放在springMVC中?

@Controller注解的bean必須由DispatcherServlet初始化的children webApplicationContext來管理,在DispatcherServlet初始化的context中會掃描當前容器所有的bean實例,根據類級別以及方法級別的映射信息注解組裝成對應的HandleMappering信息,但是ContextLoaderListener是不具備這個功能的。一句話spring中沒有辦法掃描controller的bean,所以spring中可以掃描所有的,但是對於@controller不會騎作用,所以必須在springMVC中再加一次對controller的掃描。

 

 

PS:之前遇到一個事物的,一開始把@Transactional放在COntroller怎么都不起作用,原因是只在spring中配置了 <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>,而Controller沒配,原因<tx:annoation-driven/>只會查找和它在相同的應用上下文件中定義的bean上面的@Transactional注解,如果你把它放在Dispatcher的應用上下文中,它只檢查控制器(Controller)上的@Transactional注解,而不是你services上的@Transactional注解。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM