Spring MVC 框架中Spring掃描問題

spring-mvc.xml和applicationContext.xml配置文件
首先applicationContext.xml配置文件

<!-- 打開註解方式的配置項 -->
    <!-- <context:annotation-config /> - 隱式的向spring容器注入4個BeanPostProcessor
        使用context:component-scan時可以刪除 -->
    <context:annotation-config />
    <context:component-scan base-package="cn.com.infcn" use-default-filters="false">
        <context:exclude-filter type="regex" expression="cn.com.infcn.vergo.controller,cn.com.infcn.service.controller"/>
    </context:component-scan>
<context:annotation-config />
它的作用是隱式地向 Spring 容器注入AutowiredAnnotationBeanPostProcessor、CommonAnnotationBeanPostProcessor
PersistenceAnnotationBeanPostProcessor、RequiredAnnotationBeanPostProcessor 
這4個BeanPostProcessor(提供註解標籤),也可以手動註冊。
另外<context:annotation-config/>還提供了兩個子標籤<context:include-filter>和<context:exclude-filter>
下面會講到它倆的用處。

<context:component-scan base-package="com.*" >
該配置項不但啓用了對類包進行掃描以實施註釋驅動Bean定義的功能,同時還啓用了註釋驅動自動注入的功能
(即還隱式地在內部註冊因此當使用 <context:component-scan/> 後,就可以將 <context:annotation-config/> 移除了 。
注意:爲了避免這種掃描顆粒度太大的問題,需要使用<context:include-filter>包含和<context:exclude-filter>排除,
這時就必須添加<context:annotation-config/>在使用<context:include-filter>前先說一下
<context:component-scan>的use-default-filters屬性,默認爲true,這就意味着會掃描指定包下的全部的標有@Component的類,
並註冊成bean,也是就@Component的子註解@Service,@Reposity等,所有該屬性應設置爲false

再看看spring-mvc.xml配置文件

<!-- Enables the Spring MVC @Controller programming model -->
<mvc:annotation-driven/>
<!-- 掃描 controller -->
<context:component-scan base-package="cn.com.infcn.vergo.controller,cn.com.infcn.service.controller" />
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章