Spring include-filter和exclude-filter
<context:include-filter>和<context:exclude-filter>各代表引入和排除的的過濾。
在父容器中(applicationContext.xml)
<context:component-scan base-package="com.coamctech.eastlending"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" /> <context:exclude-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice" /> </context:component-scan>
在子容器spring-mvc.xml中
<!-- 自動掃描且只掃描@Controller -->
<context:component-scan base-package="com.coamctech.eastlending" use-default-filters="false"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" /> <context:include-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice" /> </context:component-scan>
這樣配置的原因是因為Spring會用到springmvc.xml 所以就會有父子容器的概念了.applicationcontext.xml是父容器,而springmvc.xml是子容器.在父容器中排除不掃描,在子容器中掃描,這樣就避免了衝突。 Controller會進步前輩行掃描裝配,而此時的Service還沒有進行事務的加強處理,獲得的將是原樣的Service(沒有經過事務加強處理) ,最後才是applicationContext.xml中的掃描裝置進行事務處理。