实现BeanDefinitionRegistryPostProcessor
@Component
public class SmsBeanDefinitionRegistry implements BeanDefinitionRegistryPostProcessor, ResourceLoaderAware, ApplicationContextAware, InitializingBean {
private ApplicationContext applicationContext;
private ResourceLoader resourceLoader;
private static final String DEFAULT_RESOURCE_PATTERN = "**/*.class";
private MetadataReaderFactory metadataReaderFactory;
private ResourcePatternResolver resourcePatternResolver;
@Override
public void postProcessBeanDefinitionRegistry(@Nullable BeanDefinitionRegistry registry) throws BeansException {
System.out.println("BeanDefinitionRegistry in BeanDefinitionRegistryPostProcessor....");
Set<Class<?>> clazzSet = scannerPackages("com.st.myspring.sms");
clazzSet.stream().filter(Class::isInterface).forEach(x -> registerBean(registry, x));
}
private void registerBean(BeanDefinitionRegistry registry, Class clazz) {
BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(clazz);
GenericBeanDefinition definition = (GenericBeanDefinition) builder.getRawBeanDefinition();
definition.getConstructorArgumentValues().addGenericArgumentValue(clazz);
definition.setBeanClass(