insight component-scan TypeFilter

原创 2018年02月08日 17:03:56

通常spring扫描bean只需要配置包名即可,如果工程需要拆分应用分别部署,可以细化扫描的规则即可达到效果。
自带的filter包括:annotaion、assignable、aspectj、regex 或者根据特性的扫描需求实现TypeFilter接口接口

自带的TypeFilter:

  1. annotation 类似于@Component、@Service,根据所加的注解确定是否管理Class。AnnotationTypeFilter
  2. assignable 直接指定的类全名称,包括子类和接口实现类。AssignableTypeFilter
  3. aspectj、regex 各自语法、表达式匹配的类。通配用

TypeFilter工作清单:

  1. ClassPathScanningCandidateComponentProvider 提供了基于base-package扫描的实现,find candidates 就是 filter match 工作的过程
  2. 上述Provider 初始化过程会注册默认的filter 和指定的filter。
  3. 注册默认的filter包括:AnnotationTypeFilter(Component.class),并且尝试兼容ManagedBean、Named
  4. spring scan 的实现类ClassPathBeanDefinitionScanner,继承ClassPathScanningCandidateComponentProvider,实现容器的scan。
  5. RegexPatternTypeFilter 通过Pattern.matcher实现。
  6. AspectJTypeFilter 通过World、org.aspectj.weaver.patterns.TypePattern实现

tips:

  1. 通用模块化设计,细节看设计,好框架啊!
版权声明:本文为博主原创文章,未经博主允许不得转载。

spring中关于<context:component-scan>的使用说明

通常情况下我们在创建spring项目的时候在xml配置文件中都会配置这个表情,配置完这个标签后,spring就会去自动扫描base-package对应的路径或者该路径的子包下面的java文件,如果扫描...
  • LiuXingSiYe
  • LiuXingSiYe
  • 2016年08月10日 15:34
  • 15799

【SpringMVC】配置<context:component-scan>

当我们启动一个web项目时,容器(tomcat)会先读取项目web.xml配置文件的配置,这一步骤完成后项目才正常启动。 在web.xml文件中的节点加载是有顺序, -> -> ->...
  • baidu_21780935
  • baidu_21780935
  • 2017年03月09日 14:22
  • 1235

关于spring的context:component-scan

在使用maven中,多模块依赖spring配置文件,出现一些问题,最后的办法使用context:conmponent-scan来解决,具体我将在正文中详细描述问题...
  • sgls652709
  • sgls652709
  • 2015年11月20日 01:23
  • 8520

spring+dubbo+java8 Component-scan异常记录

由于公司最近推行将生产环境的jdk切换成最高版本,我负责的仓库管理系统在两台机子上无法进行升级,前两天在测试环境中进行了jdk7-jdk8的转换,出现了一些问题,这里特此记录。 出现的问题一开始以...
  • u010504064
  • u010504064
  • 2016年10月11日 14:03
  • 1793

spring中注解注入<context:component-scan>的使用说明

spring中注解注入的使用说明@Service告诉spring容器,这是一个Service类,默认情况会自动加载它到spring容器中。 @Autowried注解告诉spring,这个字段需要自动...
  • qwe5810658
  • qwe5810658
  • 2017年07月04日 17:26
  • 1316

Spring扫描组件<context:component-scan base-package=" "/>的使用详解

1.如果不想在xml文件中配置bean,我们可以给我们的类加上spring组件注解,只需再配置下spring的扫描器就可以实现bean的自动载入。 需要注意的是: 在base-...
  • you18131371836
  • you18131371836
  • 2016年12月16日 11:28
  • 6947

spring组件<context:component-scan>详解

上篇文章我们引入注解,在配置中用到了有助于完全消除Spring配置中的和元素,我们仍需要使用元素显示定义Bean。 但是Spring还有另一种技巧元素除了完成与一样的工作,还允许Spring自动检测B...
  • zwz568017880
  • zwz568017880
  • 2015年07月04日 14:02
  • 1834

spring 配置<context:component-scan base-package=” ”/>

在context中配置 如:在base-package指明一个包: 表明cn.gacl.java包及其子包中,如果某个类的头上带有特定的注解 @Component,@Repository...
  • jiangxindu1
  • jiangxindu1
  • 2015年06月13日 20:40
  • 9496

<context:component-scan>使用说明

在xml配置了这个标签后,spring可以自动去扫描base-pack下面或者子包下面的java文件,如果扫描到有@Component @Controller@Service等这些注解的类,则把这些类...
  • chunqiuwei
  • chunqiuwei
  • 2013年11月14日 12:43
  • 278233

GOOD spring <context:annotation-config> 跟 <context:component-scan>诠释及区别

和 的区别 Difference between vs    是用于激活那些已经在spring容器里注册过的bean(无论是通过xml的方式还是通过package sanning的方式)上...
  • Baple
  • Baple
  • 2013年11月21日 18:15
  • 18769
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:insight component-scan TypeFilter
举报原因:
原因补充:

(最多只允许输入30个字)