Some time ago, there were some irregularities in project scanning , There is a class problem, that is, it cannot be loaded dynamically . So there's another way in the code ： Directly from Spring get bean object , And then through the getClass Method to get the class . Project is using Springboot Developed .
Class<? extends Object> clazz = Class.forName(className);
Object bean = applicationContext.getBean(className); Class<? extends Object>
clazz = bean.getClass();
In the subsequent code test, there are many no bean named 'XXXX' available The problem of , Summarize the problems ：
1,className Instead of using full class names such as ：com.way.inter.impl.CalImpl, Need to be converted to lowercase class name ：calImpl. Because the class is given to spring When managing, the lower case class name is used by default bean Of id;
2, If the class name is all capital letters ,Spring Class names are used directly as id, Therefore, the hump structure must be used for class names , This is conducive to unified processing in the code ;
3,Component Use after annotation value Specify the name , This will also affect bean Access to . for example ：@Component(value="CalureImpl");
4, Nonstandard naming of class name , use $ And other special characters ;
5, Directly use the name of the class interface to get the bean, And the interface is not used Component annotation ;
6, Classes with duplicate names in the project also affect bean Access to .