Module bus.starter

Class ClassPathMapperScanner

java.lang.Object
org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider
org.springframework.context.annotation.ClassPathBeanDefinitionScanner
org.miaixz.bus.starter.mapper.ClassPathMapperScanner
All Implemented Interfaces:
org.springframework.beans.factory.Aware, org.springframework.context.ResourceLoaderAware, org.springframework.core.env.EnvironmentCapable

public class ClassPathMapperScanner extends org.springframework.context.annotation.ClassPathBeanDefinitionScanner
MyBatis映射器扫描器,通过包路径、注解或标记接口注册映射器 支持指定注解或接口过滤,禁用搜索所有接口时仅扫描指定类型
Since:
Java 17+
Author:
Kimi Liu
  • Field Summary

    Fields inherited from class org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider

    IGNORE_CLASSFORMAT_PROPERTY_NAME, logger
  • Constructor Summary

    Constructors
    Constructor
    Description
    ClassPathMapperScanner(org.springframework.beans.factory.support.BeanDefinitionRegistry registry)
    构造函数,初始化映射器扫描器
  • Method Summary

    Modifier and Type
    Method
    Description
    protected boolean
    checkCandidate(String beanName, org.springframework.beans.factory.config.BeanDefinition beanDefinition)
    检查候选Bean,防止重复定义
    Set<org.springframework.beans.factory.config.BeanDefinitionHolder>
    doScan(String... basePackages)
    扫描指定包路径,注册映射器Bean 如果未找到映射器,记录警告日志;否则处理Bean定义
    protected boolean
    isCandidateComponent(org.springframework.beans.factory.annotation.AnnotatedBeanDefinition beanDefinition)
    判断是否为候选组件,仅限接口且独立
    void
    配置扫描过滤器,设置搜索的接口或注解规则 支持注解、标记接口或默认扫描所有接口,排除package-info.java
    void
    setAnnotationClass(Class<? extends Annotation> annotationClass)
    设置扫描的注解类型
    void
    setMapperBuilderBeanName(String mapperBuilderBeanName)
    设置MapperBuilder的Bean名称
    void
    设置MapperFactoryBean
    void
    setMarkerInterface(Class<?> markerInterface)
    设置标记接口
    void
    setSqlSessionFactory(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory)
    设置SqlSessionFactory
    void
    setSqlSessionFactoryBeanName(String sqlSessionFactoryBeanName)
    设置SqlSessionFactory的Bean名称
    void
    setSqlSessionTemplate(org.mybatis.spring.SqlSessionTemplate sqlSessionTemplate)
    设置SqlSessionTemplate
    void
    setSqlSessionTemplateBeanName(String sqlSessionTemplateBeanName)
    设置SqlSessionTemplate的Bean名称

    Methods inherited from class org.springframework.context.annotation.ClassPathBeanDefinitionScanner

    getBeanDefinitionDefaults, getRegistry, isCompatible, postProcessBeanDefinition, registerBeanDefinition, scan, setAutowireCandidatePatterns, setBeanDefinitionDefaults, setBeanNameGenerator, setIncludeAnnotationConfig, setScopedProxyMode, setScopeMetadataResolver

    Methods inherited from class org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider

    addExcludeFilter, addIncludeFilter, clearCache, findCandidateComponents, getEnvironment, getMetadataReaderFactory, getResourceLoader, isCandidateComponent, registerDefaultFilters, resetFilters, resolveBasePackage, setEnvironment, setMetadataReaderFactory, setResourceLoader, setResourcePattern

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • ClassPathMapperScanner

      public ClassPathMapperScanner(org.springframework.beans.factory.support.BeanDefinitionRegistry registry)
      构造函数,初始化映射器扫描器
      Parameters:
      registry - Spring Bean定义注册器
  • Method Details

    • registerFilters

      public void registerFilters()
      配置扫描过滤器,设置搜索的接口或注解规则 支持注解、标记接口或默认扫描所有接口,排除package-info.java
    • doScan

      public Set<org.springframework.beans.factory.config.BeanDefinitionHolder> doScan(String... basePackages)
      扫描指定包路径,注册映射器Bean 如果未找到映射器,记录警告日志;否则处理Bean定义
      Overrides:
      doScan in class org.springframework.context.annotation.ClassPathBeanDefinitionScanner
      Parameters:
      basePackages - 扫描的基础包路径
      Returns:
      注册的Bean定义集合
    • isCandidateComponent

      protected boolean isCandidateComponent(org.springframework.beans.factory.annotation.AnnotatedBeanDefinition beanDefinition)
      判断是否为候选组件,仅限接口且独立
      Overrides:
      isCandidateComponent in class org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider
      Parameters:
      beanDefinition - Bean定义
      Returns:
      是否为候选组件
    • checkCandidate

      protected boolean checkCandidate(String beanName, org.springframework.beans.factory.config.BeanDefinition beanDefinition)
      检查候选Bean,防止重复定义
      Overrides:
      checkCandidate in class org.springframework.context.annotation.ClassPathBeanDefinitionScanner
      Parameters:
      beanName - Bean名称
      beanDefinition - Bean定义
      Returns:
      是否为有效候选
    • setAnnotationClass

      public void setAnnotationClass(Class<? extends Annotation> annotationClass)
      设置扫描的注解类型
      Parameters:
      annotationClass - 注解类
    • setMapperFactoryBean

      public void setMapperFactoryBean(MapperFactoryBean<?> mapperFactoryBean)
      设置MapperFactoryBean
      Parameters:
      mapperFactoryBean - Mapper工厂Bean
    • setMapperBuilderBeanName

      public void setMapperBuilderBeanName(String mapperBuilderBeanName)
      设置MapperBuilder的Bean名称
      Parameters:
      mapperBuilderBeanName - MapperBuilder的Bean名称
    • setMarkerInterface

      public void setMarkerInterface(Class<?> markerInterface)
      设置标记接口
      Parameters:
      markerInterface - 标记接口
    • setSqlSessionFactory

      public void setSqlSessionFactory(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory)
      设置SqlSessionFactory
      Parameters:
      sqlSessionFactory - SqlSession工厂
    • setSqlSessionFactoryBeanName

      public void setSqlSessionFactoryBeanName(String sqlSessionFactoryBeanName)
      设置SqlSessionFactory的Bean名称
      Parameters:
      sqlSessionFactoryBeanName - SqlSessionFactory的Bean名称
    • setSqlSessionTemplate

      public void setSqlSessionTemplate(org.mybatis.spring.SqlSessionTemplate sqlSessionTemplate)
      设置SqlSessionTemplate
      Parameters:
      sqlSessionTemplate - SqlSession模板
    • setSqlSessionTemplateBeanName

      public void setSqlSessionTemplateBeanName(String sqlSessionTemplateBeanName)
      设置SqlSessionTemplate的Bean名称
      Parameters:
      sqlSessionTemplateBeanName - SqlSessionTemplate的Bean名称