spring注入的原理
作者:bin按照Bean名称从BeanFactory中获取或创建Bean的实例,然后反射将其注入属性的值中
类:org.springframework.beans.factory.annotation.InjectionMetadata
protected void inject(Object target, @Nullable String requestingBeanName, @Nullable PropertyValues pvs) throws Throwable { if (this.isField) { Field field = (Field) this.member; //如果是私有方法,获得他的权限,才能注入 ReflectionUtils.makeAccessible(field); //getResourceToInject从beanFactory中通过beanName获取或者创建Bean实例 field.set(target, getResourceToInject(target, requestingBeanName)); } else { if (checkPropertySkipping(pvs)) { return; } try { Method method = (Method) this.member; ReflectionUtils.makeAccessible(method); method.invoke(target, getResourceToInject(target, requestingBeanName)); } catch (InvocationTargetException ex) { throw ex.getTargetException(); } } }