多层注入 不行啊
来源:5-11 本章小结
慕盖茨205585
2020-07-10
自研ioc 多层注入失败 视频中也没有测试
写回答
3回答
-
慕盖茨205585
提问者
2020-07-13
我找到了我的问题 如果使用lombok的@Getter的话 是找不到实现了接口的类 其中需要注入的接口的实现类的
132020-07-15 -
翔仔
2020-07-12
for(Class<?> clazz : beanContainer.getClasses()){ //2.遍历Class对象的所有成员变量 Field[] fields = clazz.getDeclaredFields(); if (ValidationUtil.isEmpty(fields)){ continue; } for(Field field : fields){ //3.找出被Autowired标记的成员变量 if(field.isAnnotationPresent(Autowired.class)){ Autowired autowired = field.getAnnotation(Autowired.class); String autowiredValue = autowired.value(); //4.获取这些成员变量的类型 Class<?> fieldClass = field.getType(); //5.获取这些成员变量的类型在容器里对应的实例 Object fieldValue = getFieldInstance(fieldClass, autowiredValue); if(fieldValue == null){ throw new RuntimeException("unable to inject relevant type,target fieldClass is:" + fieldClass.getName() + " autowiredValue is : " + autowiredValue); } else { //6.通过反射将对应的成员变量实例注入到成员变量所在类的实例里 Object targetBean = beanContainer.getBean(clazz); ClassUtil.setField(field, targetBean, fieldValue, true); } } } }
主要调试DependencyInjector看看,你service里面标注@Autowired的成员变量的实例被注入了没,如果没被注入肯定是没有的
00 -
翔仔
2020-07-11
同学好,多层注入是啥意思?就跟spring一样,比如说你controller里面还有一个service的属性的话,需要给service属性进行注入才行,然后service里面又有dao的话,需要给service的dao注入才行。
022020-08-31
相似问题