基于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. [hdu P4081] Qin Shi Huang’s National Road System

    [hdu P4081] Qin Shi Huang’s National Road System Time Limit: 2000/1000 MS (Java/Others)    Memory Li ...

  2. django学习之——Model

    打开 settings.py 找到 DATABASE  配置我们的数据库,(MySQL) # Database # https://docs.djangoproject.com/en/1.7/ref/ ...

  3. 2、使用Angular-CLI初始化Angular项目(踩过的深坑!!!)

    1.step1:建一个放项目的文件夹,打开cmd,或vs code的终端,找到文件夹根目录 2.step2:初始化脚手架 初始化命令: ng new 项目名称 --skip-install 注意:-- ...

  4. springboot整合mybatis遇到无法扫描MaperScan包的问题

    1.启动类加上@MaperScan注解后,一直报错如下: Error creating bean with name 'platUserMapper' defined in file [D:\work ...

  5. JsonLayout log4j2 json格式输出日志

    如果日志输出时,想改变日志的输出形式为Json格式,可以在log4j2.xml中使用JsonLayout标签,使日志输出格式为Json格式. 前提需要Jackson的包,保证项目中包含jackson的 ...

  6. JavaScript入门经典(第四版)读书笔记

    第一部分 Web脚本编写与JavaScript语言的概念 1.document.lastModified()    ->    返回文档修改日期 2.<head>标签中的<sc ...

  7. 《JavaScript Dom 编程艺术》读书笔记-第9章

    SS-DOM,本章内容: style属性 如何检索样式 如何改变样式三页一体的网页 结构层:由HTML或XHTML之类的标记语言负责创建.标签(tag)也就是尖括号里的单词,对网页内容的语义含义做出了 ...

  8. Problem E: 类的初体验(V)

    Description 定义一个类Data,只有一个int类型的属性和如下方法: 1.   缺省构造函数,将属性初始化为0,并输出"Data's default constructor.&q ...

  9. nginx 开启高效文件传输模式

    (1) sendfile 参数用于开启文件的高效传输模式,该参数实际上是激活了 sendfile() 功能,sendfile() 是作用于两个文件描述符之间的数据拷贝函数,这个拷贝操作是在内核之中的, ...

  10. 疑问:VS在调试的过程中,总是会提示正在加载picface.dll的符号,然后卡死在那

    环境: 硬件环境: PC 软件环境: Windows7 VS2012 MFC程序调试 现象: 调试的过程中,提示“正在从以下目录加载picface.dll的符号:C:\windows\dll”,然后就 ...