zoukankan      html  css  js  c++  java
  • 包扫描--自定义规则

    看《Spring源码深度解析》笔记

    1、进行包扫描的时候,如果type=FilterType.CUSTOM,时候,即使用的是自定义规则,即给出一个FilterType实现类即可:

    public class MyTypeFilter implements TypeFilter {
        /**
         * metadataReader:读取到的当前正在扫描的类的信息
         * metadataReaderFactory:可以获取到其他任何类信息的
         */
        @Override
        public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory)
                throws IOException {
            // TODO Auto-generated method stub
            //获取当前类注解的信息
            AnnotationMetadata annotationMetadata = metadataReader.getAnnotationMetadata();
            //获取当前正在扫描的类的类信息---类型是什么以及实现什么接口等信息
            ClassMetadata classMetadata = metadataReader.getClassMetadata();
            //获取当前类资源(比如:类的路径)
            Resource resource = metadataReader.getResource();
            String className = classMetadata.getClassName();
            //扫描所有类名包含Red的类
            if(className.contains("Red")){
                return true;
            }
            return false;
        }
    
    }

    2、在配置中进行使用:

    @Configuration  //告诉spring这是一个配置类
    @ComponentScan(value="com.atguigu",includeFilters = {
            @Filter(type=FilterType.CUSTOM,classes={MyTypeFilter.class})
    },useDefaultFilters = false)
    public class MainConfig {
    }

    即可以将类名包含“Red”加载进入容器之中。

  • 相关阅读:
    CF1386C Joker
    P7486 「StOI2031」彩虹
    CF1516E Baby Ehab Plays with Permutations
    重拾莫比乌斯反演
    联合省选 2020 补题记录
    拉格朗日插值如何插出系数
    NOI Online 2021 补题
    Re:从0开始的多项式生活
    LOJ #6485. LJJ 学二项式定理
    P5591 小猪佩奇学数学
  • 原文地址:https://www.cnblogs.com/mayang2465/p/12019183.html
Copyright © 2011-2022 走看看