首页 > spring > spring注入的原理

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();
        }
    }
}

您必须 [ 登录 ] 才能发表留言!