扫描并实例化约定包下的子类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;
}
// ...
}