'spring ClassPathBeanDefinitionScanner not work in BeanDefinitionRegistryPostProcessor
spring ClassPathBeanDefinitionScanner not work in BeanDefinitionRegistryPostProcessor
it worked in IntelliJ IDEA ,but not work in zsh
package com.example.demo.ex;
import com.example.demo.ex.support.RpcApi;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.AnnotatedBeanDefinition;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor;
import org.springframework.beans.factory.support.SimpleBeanDefinitionRegistry;
import org.springframework.context.annotation.AnnotationBeanNameGenerator;
import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider;
import org.springframework.core.type.filter.AnnotationTypeFilter;
import java.util.Set;
/**
* @author makui
* @created on 2022/3/17
**/
public class BeanRegisTest implements BeanDefinitionRegistryPostProcessor {
@Override
public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry beanDefinitionRegistry) throws BeansException {
System.out.println("---------------------------111-------------------");
ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(false) {
@Override
protected boolean isCandidateComponent(AnnotatedBeanDefinition beanDefinition) {
return true;
}
};
scanner.addIncludeFilter(new AnnotationTypeFilter(RpcApi.class));
Set<BeanDefinition> beanDefinitionSet = scanner.findCandidateComponents("com."); //
System.out.println("beanDefinitionSet size: " + beanDefinitionSet.size());
for (BeanDefinition beanDefinition : beanDefinitionSet) {
System.out.println("---------------------------222-------------------");
final String beanClassName = beanDefinition.getBeanClassName();
Class<?> aClass = null;
try {
aClass = Class.forName(beanClassName);
} catch (ClassNotFoundException e) {
e.printStackTrace();
continue;
}
final String beanName = AnnotationBeanNameGenerator.INSTANCE.generateBeanName(beanDefinition, new SimpleBeanDefinitionRegistry());
beanDefinitionRegistry.registerBeanDefinition(beanName, beanDefinition);
}
}
@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory configurableListableBeanFactory) throws BeansException {
}
}
enter image description here it worked in IntelliJ IDEA ,but not work in zsh
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
