流程图
一.springboot IOC
1 通过反射自定义 @Autowired.
public class test2 {
public static void main(String[] args) {
UserController userController = new UserController();
Class<? extends UserController> clazz = userController.getClass();
//获取所有的属性值
Stream.of(clazz.getDeclaredFields()).forEach(field -> {
//开始遍历每一个属性值,当发现属性被@Autowired修饰时候 需要进行注入
final Autowired annotation = field.getAnnotation(Autowired.class);
if(annotation!=null){
field.setAccessible(true);
//获取类型方便创建具体对象
Class<?> type = field.getType();
try {
Object o = type.newInstance();
field.set(userController,o);
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
});
System.out.println(userController.getUserService());
}
}
2.BeanFactory
在对象创建前对对象进行扩展
public class mybeanFactory implements BeanFactoryPostProcessor {
@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
String[] beanDefinitionNames = beanFactory.getBeanDefinitionNames();
for (String neme :beanDefinitionNames) {
System.out.println(neme);
/* BeanDefinition beanDefinition = beanFactory.getBeanDefinition(neme);
beanDefinition.set*/
}
}
}
TODO…