一对夫妇spring专家的帮助下,我找到了一个解决方案:
source的属性
BeanDefinition可以
AnnotatedTypemetadata。这个接口有一个
getAnnotationAttributes()我可以用来获取bean方法的注释的方法:
public List<String> getBeansWithAnnotation( Class<? extends Annotation> type, Predicate<Map<String, Object>> attributeFilter ) { List<String> result = Lists.newArrayList(); ConfigurableListableBeanFactory factory = applicationContext.getBeanFactory(); for( String name : factory.getBeanDefinitionNames() ) { BeanDefinition bd = factory.getBeanDefinition( name ); if( bd.getSource() instanceof AnnotatedTypemetadata ) { AnnotatedTypemetadata metadata = (AnnotatedTypemetadata) bd.getSource(); Map<String, Object> attributes = metadata.getAnnotationAttributes( type.getName() ); if( null == attributes ) { continue; } if( attributeFilter.apply( attributes ) ) { result.add( name ); } } } return result;}


