context:component-scan属性介绍,SSM的bean被扫描两次问题

context:component-scan属性

​  默认情况下,context:component-scan扫描包中注解所标 注的类,如@Component、@Service、@Controller、@Repository。

context:component-scan下的属性值

context:component-scan的属性描述
base-package扫描的基本包路径,可以使用通配符配置
annotation-config是否激活属性注入注解,false则关闭属性注入注解功能
name-generatorBean的ID策略生成器。指定你的构造型注解,注册为Bean的ID生成策略
resource-pattern对资源进行筛选的正则表达式,具体细分在include-filter与exclude-filter中进行
scope-resolverscope解析器 ,与scoped-proxy只能同时配置一个
scoped-proxyscope的代理,与scope-resolver只能同时配置一个
use-default-filters是否使用默认的扫描过滤,默认值true

SSM配置 context:component-scan

  在使用SSM进行开发的时候,一般要求使用Spring配置文件只扫描@Service,@Repository的bean ,而使用SpringMVC配置文件只扫描@Controller。(防止扫描两次bean)
  use-default-filters="true" 使用默认的过滤器,扫描全部注解(扫描@controller @service @Reposity @compont)

解决bean被扫描两次的问题

exclude-filter 配置的不扫描(黑名单)
include-filter 配置的需要扫描(白名单)
use-default-filters 默认为true就是全扫描(false全部不扫描)

spring配置文件配置:

<!-- use-default-filters="true" 使用默认的过滤器 扫描@controller @service @Reposity @compont等所有注解
<context:exclude-filter> 配置避免扫描controller 
-->
<context:component-scan base-package="包路径" use-default-filters="true">
        <!-- 扫描的时候不扫描Controller-->
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>

springmvc配置文件配置:

<!-- use-default-filters="false" 所有都不会扫描 -->
<context:component-scan base-package="com.xgf.springmvc.ajax" use-default-filters="false">
		<!--context:include-filter 只扫描@Controller -->
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>
©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页