@Documented @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Import(AuthControlRegistrar.class) @Component public @interface ClientAuthControl { }
@Slf4j @Component public class AuthControlRegistrar implements ImportBeanDefinitionRegistrar, EnvironmentAware { private Environment environment; private static Set<BeanDefinition> candidateComponents = new HashSet<>(); public static Set<String> URL_NOT_AUTH = new HashSet<>(); @Override public void setEnvironment(Environment environment) { this.environment = environment; } @Override public void registerBeanDefinitions(AnnotationMetadata annotationMetadata, BeanDefinitionRegistry registry) { // 筛选指定注解 ClassPathScanningCandidateComponentProvider scan = new ClassPathScanningCandidateComponentProvider(false, this.environment); scan.addIncludeFilter(new AnnotationTypeFilter(ClientAuthControl.class)); String packageName = ClassUtils.getPackageName(annotationMetadata.getClassName()); candidateComponents.addAll(scan.findCandidateComponents(packageName)); }
}
运行状态是运行时(RetentionPolicy.RUNTIME)个人认为时这个问题,在扫描bean描述的时候,有当前注解的方法的路径没有被放入map中这是为什么?求教各位!!感谢