public class GetBasePackage {
private Class<? extends Annotation> annotation
public GetBasePackage(Class<? extends Annotation> annotation) {
this.annotation = annotation
}
public Stream<String> getBasePackage(AnnotationMetadata annotationMetadata){
Map<String, Object> annotationAttributes = annotationMetadata.getAnnotationAttributes(annotation.getName())
AnnotationAttributes attributes = new AnnotationAttributes(annotationAttributes)
String[] value = attributes.getStringArray("value")
String[] basePackages = attributes.getStringArray("basePackages")
String[] entityPaths = attributes.getStringArray("entityPath")
//没配注解
if (value.length == 0 && basePackages.length == 0 && entityPaths.length == 0) {
String className = annotationMetadata.getClassName()
return Stream.of(ClassUtils.getPackageName(className))
}
//配了注解
return Stream.of(Arrays.asList(value),Arrays.asList(basePackages),Arrays.asList(entityPaths)).flatMap(list -> list.stream())
}
}
GetBasePackage getBasePackage = new GetBasePackage(EnableESTools.class)
getBasePackage.getBasePackage(annotationMetadata).forEach((s) -> {
System.out.println(s)
})