当前位置: 首页 > news >正文

蒙牛官网网站怎么做的网页设计模板图片 淘宝

蒙牛官网网站怎么做的,网页设计模板图片 淘宝,网站建设模拟器,二手车的网站建设例子resolveDependency()实现 该方法表示,传入一个依赖描述(DependencyDescriptor),该方法会根据该依赖描述从BeanFactory中找出对应的唯一的一个Bean对象。 @Nullable Object resolveDependency(DependencyDescriptor descriptor, @Nullable String requestingBeanName,@Null…

resolveDependency()实现

该方法表示,传入一个依赖描述(DependencyDescriptor),该方法会根据该依赖描述从BeanFactory中找出对应的唯一的一个Bean对象。

@Nullable
Object resolveDependency(DependencyDescriptor descriptor, @Nullable String requestingBeanName,@Nullable Set<String> autowiredBeanNames, @Nullable TypeConverter typeConverter) throws BeansException;

下面来分析一下DefaultListableBeanFactoryresolveDependency()方法的具体实现,具体流程图

findAutowireCandidates()实现

根据类型找beanName的底层流程

对应执行流程图为

  1. 找出BeanFactory中类型为type的所有的Bean的名字,注意是名字,而不是Bean对象,因为我们可以根据BeanDefinition就能判断和当前type是不是匹配,不用生成Bean对象
  2. 把resolvableDependencies中key为type的对象找出来并添加到result中
  3. 遍历根据type找出的beanName,判断当前beanName对应的Bean是不是能够被自动注入
  4. 先判断beanName对应的BeanDefinition中的autowireCandidate属性,如果为false,表示不能用来进行自动注入,如果为true则继续进行判断
  5. 判断当前type是不是泛型,如果是泛型是会把容器中所有的beanName找出来的,如果是这种情况,那么在这一步中就要获取到泛型的真正类型,然后进行匹配,如果当前beanName和当前泛型对应的真实类型匹配,那么则继续判断
  6. 如果当前DependencyDescriptor上存在@Qualifier注解,那么则要判断当前beanName上是否定义了Qualifier,并且是否和当前DependencyDescriptor上的Qualifier相等,相等则匹配
  7. 经过上述验证之后,当前beanName才能成为一个可注入的,添加到result中

关于依赖注入中泛型注入的实现

首先在Java反射中,有一个Type接口,表示类型,具体分类为:

  1. raw types:也就是普通Class
  1. parameterized types:对应ParameterizedType接口,泛型类型
  2. array types:对应GenericArrayType,泛型数组
  3. type variables:对应TypeVariable接口,表示类型变量,也就是所定义的泛型,比如T、K
  4. primitive types:基本类型,int、boolean

Spring中,但注入点是一个泛型时,也是会进行处理的,比如:

@Component
public class UserService extends BaseService<OrderService, StockService> {public void test() {System.out.println(o);}}public class BaseService<O, S> {@Autowiredprotected O o;@Autowiredprotected S s;
}
  1. Spring扫描时发现UserService是一个Bean
  2. 那就取出注入点,也就是BaseService中的两个属性o、s
  3. 接下来需要按注入点类型进行注入,但是o和s都是泛型,所以Spring需要确定o和s的具体类型。
  4. 因为当前正在创建的是UserService的Bean,所以可以通过userService.getClass().getGenericSuperclass().getTypeName()获取到具体的泛型信息,比如com.zhouyu.service.BaseService<com.zhouyu.ser
http://www.sczhlp.com/news/117508/

相关文章:

  • import wordpress百度搜索引擎优化详解
  • 石家庄做网站seo成都房产网站建设
  • 长春网站制作软件比较网站建设
  • 网站建设的具体实施方案成都市住建局平台官网
  • 网站用什么格式做上海广告公司排名
  • 龙岩网站制作公司石家庄风险等级
  • 合川网站建设公司流量网站
  • 企业网站建设的方式有哪些方式手机如何做车载mp3下载网站
  • 兰州网站哪里做常见的站内推广方式有哪几种
  • 网页制作工具手机版seo网络推广培训班
  • 2021年9月重大新闻南宁seo网络推广公司
  • 网站用ps下拉效果怎么做音乐网站建设方案
  • 怎样围绕网站专题发展来做pptwordpress获取相关文章
  • 中文网站建设技术影视logo免费设计
  • 定制网站多少钱wordpress ap
  • 网站建设多少价格慈溪网站制作哪家最好
  • 光明网站建设中国建筑报道网
  • 临沂网站建设举措做网站文案
  • 怎么做网站的推广nginx代理wordpress
  • 山东平台网站建设公司怎么登录百度app
  • 建设部网站6.1文件移动路由器做网站服务器吗
  • 湖南企业网站制作百度识别图片找图
  • 反省
  • 海宁网站怎么做seo营销广告策划
  • 机关门户网站建设要求做国外网站做什么内容
  • 网站快速备案安全吗站长统计网站统计
  • 山西响应式网站哪家好邢台信息港二手车出售
  • 鹤壁市网站建设wordpress博客编辑器
  • 英雄联盟网站模板怎样建立门户网站
  • 湖南网站优化wordpress火车头采集发布模块