第三方反射工具包reflections使用


前言

  • 之前设计通用的经办复核功能时,大面积的进行了抽象和规范定义,于是出现了需要扫描约定包下类的场景。
  • 各种方式尝试后,最终使用第三方Maven库 reflections 很好的实现了效果,记录下demo。

开始

  • maven引入
    
      
          org.reflections
          reflections
          0.9.11
      
    
  • 扫描并实例化约定包下的子类demo
    @Data
      @EqualsAndHashCode(callSuper = false)
      @JsonInclude(JsonInclude.Include.NON_NULL)
      @Slf4j
      public abstract class BaseAuditViewDto extends BaseAuditDto {
      	private static final long serialVersionUID = 1L;
      	
      	private static final String prefixPackage = "com.ql.feign";
      	
      	private static Map> businessClassMap = new HashMap<>();
      	
      	static {
      		log.info("开始获取所有审核展示数据子类,并注册子类到对应的审核业务");
      		log.info("扫描子路径:{}", prefixPackage);
      		Reflections reflections = new Reflections(prefixPackage);
      		Set> subClazzs = reflections.getSubTypesOf(BaseAuditViewDto.class);
      		for(Class<? extends BaseAuditViewDto> clazz:subClazzs) {
      			try {
      				BaseAuditViewDto newInstance = clazz.newInstance();
      				AuditBusinessTypeEnum[] bizTypess = newInstance.auditBusinessTypePresent();
      				for(int i=0; i getDataShowQualifiedClass(AuditBusinessTypeEnum business) {
      		Class<? extends BaseAuditViewDto> qualifiedClass = businessClassMap.get(business);
      		return qualifiedClass;
      	}
      	
          // ...
      }
    

参考

  • reflects-github
  • 本文原文地址
  • 博客园同步更新