怎样实现依赖注入功能之笔记
发布时间:2020-12-13 21:59:01 所属栏目:百科 来源:网络整理
导读:对类的实例化,不是开发者自己通过new的方式来实例化,而是通过框架自身来实例化,这过程称为IoC。控制不是由开发者来决定的,而是反转给框架了。一般地,我们也将控制反转称为DI(Dependency Injection,依赖注入)。那如何实现呢? 最简单的方式是,先通过
对类的实例化,不是开发者自己通过new的方式来实例化,而是通过框架自身来实例化,这过程称为IoC。控制不是由开发者来决定的,而是反转给框架了。一般地,我们也将控制反转称为DI(Dependency Injection,依赖注入)。那如何实现呢? 最简单的方式是,先通过BeanHelper获取所有Bean Map(是一个Map<Class<?>,Object> 结构,纪录了类与对象的映射关系, 核心实现: Map<Class<?>,Object> beanMap = BeanHelper.getBeanMap(); if (CollectionUtil.isNotEmpty(beanMap)) { for (Map.Entry<Class<?>,Object> beanEntry : beanMap.entrySet()) { Class<?> beanClass = beanEntry.getKey(); Object beanInstance = beanEntry.getValue(); Field[] beanFields = beanClass.getDeclaredFields(); if (ArrayUtil.isNotEmpty(beanFields)) { for (Field beanField : beanFields) { if (beanField.isAnnotationPresent(Inject.class)) { Class<?> beanFieldClass = beanField.getType(); Object beanFieldInstance = beanMap.get(beanFieldClass); if (beanFieldInstance != null) { ReflectionUtil.setField(beanInstance,beanField,beanFieldInstance); } } } } } } 更多架构底层实现代码请移步 https://github.com/edagarli/own_framework (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |