基于xml形式ComponentScan的使用如下

<context:component-scan base-package="com.luna" use-default-filters="false">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>

基于注解@ComponentScan的使用

@Configuration

/*@ComponentScan(value = "com.luna", includeFilters = {

   // @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = {Controller.class}),
   // @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE,value ={com.luna.service.PersonService.class} )
   @ComponentScan.Filter(type = FilterType.CUSTOM,value = {MyFilter.class})
 },useDefaultFilters = false)*/

@ComponentScan(value = "com.luna",

    //排除某些类
    excludeFilters = {
//排除Controller注解标注的类
    @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = {Controller.class}),
//排除指定类型的类
@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE,value ={com.luna.service.PersonService.class} )
})
public class ScanConfig {
}

测试

@Test
public void test(){
AnnotationConfigApplicationContext applicationContext =
new AnnotationConfigApplicationContext(ScanConfig.class);
String[] beanDefinitionNames = applicationContext.getBeanDefinitionNames();
Arrays.asList(beanDefinitionNames).stream().forEach(x->System.out.println("扫描到的Bean---"+x));
}

@ComponentScan一些常用参数

//基本属性 value/basePackages:指定一组要扫描的包,将扫描这些包及其子包下的文件.(默认基包为配置类所在的包)

classes:直接指定扫描的一些类,这些类所在的包及其子包也会被扫描。

nameGenerator:指定一个默认扫描组件的命名类, 默认命名使用组件类名第一个字小写。

excludeFilters:指定扫描的时候排除某些类,按什么规则,需要一组@ComponentScan.Filter的注解配置,每个@Filter可以配置一组过滤规则,多个@Filter可以基于正则/注解/具体类配置不同的过滤规则。

includeFilters:指定扫描的时候,只包含某些类。

useDefaultFilters 自动扫描Controller Component Service Resposity 这四个注解
所以在不指定明确包的情况下如 com.luna 全包扫描,会扫描到Controller Component Service Resposity 四个注解

FilterType.ANNOTATION(默认) 一组注解,命中所有使用该注解的类,{MyAnno.class} -
FilterType.ASSIGNABLE_TYPE 一组具体类 -
FilterType.ASPECTJ - 一组表达式,使用Aspectj表达式命中类
FilterType.REGEX - 一组表达式,使用正则命中类
FilterType.CUSTOM 自定义的TypeFilter. -

【spring】之基于注解@ComponentScan的一些使用的更多相关文章

  1. Spring:基于注解的Spring MVC

    什么是Spring MVC Spring MVC框架是一个MVC框架,通过实现Model-View-Controller模式来很好地将数据.业务与展现进行分离.从这样一个角度来说,Spring MVC ...

  2. Spring boot 基于注解方式配置datasource

    Spring boot 基于注解方式配置datasource 编辑 ​ Xml配置 我们先来回顾下,使用xml配置数据源. 步骤: 先加载数据库相关配置文件; 配置数据源; 配置sqlSessionF ...

  3. Spring+Mybatis基于注解整合Redis

    基于这段时间折腾redis遇到了各种问题,想着整理一下.本文主要介绍基于Spring+Mybatis以注解的形式整合Redis.废话少说,进入正题. 首先准备Redis,我下的是Windows版,下载 ...

  4. SpringMVC4 + Spring + MyBatis3 基于注解的最简配置

    本文使用最新版本(4.1.5)的springmvc+spring+mybatis,采用最间的配置方式来进行搭建. 1. web.xml 我们知道springmvc是基于Servlet: Dispatc ...

  5. spring mvc 基于注解的使用总结

    本文转自http://blog.csdn.net/lufeng20/article/details/7598801 概述 继 Spring 2.0 对 Spring MVC 进行重大升级后,Sprin ...

  6. Spring IoC — 基于注解的配置

    基于XML的配置,Bean定义信息和Bean实现类本身是分离的,而采用基于注解的配置方式时,Bean定义信息即通过在Bean实现类上标注注解实现. @Component:对类进行标注,Spring容器 ...

  7. 【Spring】基于注解的实现SpringMVC+MySQL

    目录结构: // contents structure [-] SprinigMVC是什么 SpringMVC工作原理 @Controller和@RequestMapping注解 @Controlle ...

  8. SpringMvc+Spring+MyBatis 基于注解整合

    最近在给学生们讲Spring+Mybatis整合,根据有的学生反映还是基于注解实现整合便于理解,毕竟在先前的工作中团队里还没有人完全舍弃配置文件进行项目开发,由于这两个原因,我索性参考spring官方 ...

  9. Spring:基于注解的依赖注入的使用

    1.什么是pojo?什么是bean? 首先,在之前几篇Spring的介绍文章当中,自己都提到了一个名词叫做POJO类,但是在回顾Spring的注解的使用的时候,去形容java当中的对象还有一个名词是叫 ...

随机推荐

  1. django中form组件

    Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否 ...

  2. 2015-10-05 js3

    Javascript 实例2九九乘法表 var s = ""; s += "<table>"; for (var i = 1; i < 10; ...

  3. laravel 微信小程序登录 加密解密扩展包

    https://github.com/lanceWan/wxxcx 测试的时候一定要保证服务器的 appid  和客户端的appid一致 如果是切换测试 那么需要把本地的项目从微信小程序上面删除掉 再 ...

  4. HDFS二.HDFS实现分布式文件存储---体系结构

    单击模式(Standalone): 单机模式是Hadoop的默认模式.当首次解压Hadoop的源码包时,Hadoop无法了解硬件安装环境,便保守地选择了最小配置.在这种默认模式下所有3个XML文件均为 ...

  5. 一个神奇的???whatever~~

    一个神奇的类,用来封装消息数据,统一数据传递接口,从unity引擎源码拷贝而来. #include <iostream> #include <assert.h> #includ ...

  6. Code::Blocks环境下导入WS2_32.lib文件

    打开菜单选项中 Settings -> Compiler 点击Add 找到lib文件的路径,导入 点击OK--OK,完成!

  7. VM for Linux 版本的Bundle格式文件的安装

    VM for Linux 版本的安装步骤: 下面链接下载VM程序包 : https://www.vmware.com/products/workstation-pro/workstation-pro- ...

  8. FCC JS基础算法题(10):Falsy Bouncer(过滤数组假值)

    题目描述: 删除数组中的所有假值.在JavaScript中,假值有false.null.0."".undefined 和 NaN. 使用filter方法,过滤掉生成的 Boolea ...

  9. SVG的用法

    三种添加方式 <iframe src="图的地址" frameborder="0"></iframe> <object width ...

  10. 解决ubuntu下firefox的flash全屏后不能恢复问题 ZT

    sudo mkdir /etc/adobe echo "OverrideGPUValidation=true" >~/mms.cfg sudo mv ~/mms.cfg /e ...