spring與springMVC的配置問題

2021-09-19 07:22:20 字數 1727 閱讀 8143

弄了這麼久spring和springmvc一直以為這兩個配置出來的物件是一致的,隨便進行搭配,後來發現原來還是不一致的。

springmvc和spring會分別建立乙個ioc容器,那麼我們在進行掃瞄的時候就要注意,下面我們將整個訪問流程,進行乙個梳理,

一般情況下,controller是由我們springmvc進行管理,service和dao是由spring進行管理。

一般我們將spring稱之為父容器,springmvc成做子容器。

父容器是由listener建立的,而自容器是由servlet進行建立的,所以父容器要比子容器建立的早。

父容器和子容器在尋找物件時,會先從自己的容器中查詢,如果沒有再從別人的容器中查詢,所以父容器和子容器不能同時管理同乙個物件,如果springmvc中有service物件而spring中也有service物件,而把事務物件分配到spring來管理,那麼springmvc中執行service的物件就會沒有事務管理。

所以,在我們進行配置的時候要麼物件全部交給springmvc來管理,要麼就分開清除進行管理,現在我們看看分開管理和一起管理的區別,首先一起管理時springmvc的服務如何配置:

atguigu

org.springframework.web.servlet.dispatcherservlet

contextconfiglocation

1*.htm

*.do

主要看param-value 這裡param已經是掃瞄了我們所有的檔案了,也就是這裡所有的物件全部都交給springmvc來進行管理了。這種寫法比較簡單,但是分工不夠明確。

第二種分開寫。

springmvc

org.springframework.web.servlet.dispatcherservlet

contextconfiglocation

classpath:spring/springmvc-context.xml

1*.htm

*.do

這裡springmvc就只載入自己那部分的物件即可,spring的另外配置如下

contextconfiglocation

classpath*:spring/spring-*.xml

org.springframework.web.context.contextloaderlistener

只載入配置spring自己的配置檔案。當然這還沒完,重點是在配置檔案中,你掃瞄的部分是不是只是包含你自己的那一部分。

那麼在springmvc-context中配置掃瞄為:

其中use-default-filters屬性為是否使用預設過濾器掃瞄,預設的會掃瞄@controller @service @repository等註解,我們設定為false就全部都不掃瞄,然後配置乙個只掃瞄controller註解的。

同理,在spring-context中的掃瞄包配置為包括所有的controller除去controller

匹配除去@controller的註解即可。

總結:其實不管你怎麼配置,只要你把包都掃瞄到了,他一定不會報錯,不過就是說,我們的事務配置必須要和service配置在同乙個容器中罷了。

Thymeleaf模板與Spring MVC整合

thymeleaf 定義了 org.thymeleaf.spring4.view.thymeleafview 和 org.thymeleaf.spring4.view.thymeleafviewresolver 預設使用thymeleafview 作為 view thymeleaf 提供了乙個spr...

SpringBoot擴充套件SpringMVC

編寫乙個配置類,型別是webmvcconfigureradapter 繼承 使用webmvcconfigureradapter可以擴充套件,不能標註 enablewebmvc 既保留了配置,也能拓展我們自己的應用 configuration public class mymvcconfig exte...

springMVC學習(一)springMVC簡介

springmvc介紹 spring web mvc和struts2都屬於表現層的框架,它是spring框架的一部分,我們可以從spring的整體結構中看得出來 spring的整體結構圖 mvc是一種設計模式,mvc在b s系統下的應用 理解 1 使用者發起request請求至控制器 control...