1. 程式人生 > >SpringMCV執行流程及整合spring

SpringMCV執行流程及整合spring

一、Spring整合SpringMVC

@Service用於標註業務層元件

@Controller用於標註控制層元件(如struts中的action)

@Repository用於標註資料訪問元件,即DAO元件

@Component泛指元件,當元件不好歸類的時候,我們可以使用這個註解進行標註。

問題: 若 Spring 的 IOC 容器和 SpringMVC 的 IOC 容器掃描的包有重合的部分, 就會導致有的 bean 會被建立 2 次.

解決:

1. 使 Spring 的 IOC 容器掃描的包和SpringMVC 的 IOC 容器掃描的包沒有重合的部分. (不推薦)

2. 使用 exclude-filter 和 include-filter 子節點來規定只能掃描的註解

在Spring.xml中,用use-default-filters="false" 來指定不按照預設的掃描,按照自己定義的哪些需要掃描的包。include-filter 表示要的包,exclude-filter 表示除了這個包
  <context:component-scan base-package="com.atguigu.springmvc" 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>
在beans.xml中,
<context:component-scan base-package="com.atguigu.springmvc">
		<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>

3.注:SpringMVC 的 IOC 容器中的 bean 可以來引用 Spring IOC 容器中的 bean,但是 Spring IOC 容器中的 bean 卻不能來引用 SpringMVC IOC 容器中的 bean。


二、springmvc執行流程