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

网站注册信息站长之家音效素材

网站注册信息,站长之家音效素材,阳江网上房地产官网,免费注册com域名在 Spring 框架中,Autowired 和 Resource 是两个常用的注解,用于实现依赖注入。尽管它们都能达到将依赖对象注入到目标 bean 的目的,但在细节上存在一些显著的差异。本文将深入探讨这两个注解的区别,并结合 Spring 源码进行分析&a…

在 Spring 框架中,@Autowired 和 @Resource 是两个常用的注解,用于实现依赖注入。尽管它们都能达到将依赖对象注入到目标 bean 的目的,但在细节上存在一些显著的差异。本文将深入探讨这两个注解的区别,并结合 Spring 源码进行分析,同时附上源码的执行流程图,帮助您更好地理解它们的工作原理。

一、@Autowired 注解

源码分析

在 Spring 中,@Autowired 的处理主要在 AutowiredAnnotationBeanPostProcessor 类中。当 Spring 容器初始化 bean 时,会遍历 bean 中的属性,如果发现带有 @Autowired 注解的属性,就会尝试从容器中获取对应的 bean 进行注入

代码入口:

public class AutowiredAnnotationBeanPostProcessor extends InstantiationAwareBeanPostProcessorAdapter {public PropertyValues postProcessProperties(PropertyValues pvs, Object bean, String beanName) {/*** 根据当前bean 查找出来所有添加了@AutoWired 属性的* 根据属性实例化 一些注入器*/InjectionMetadata metadata = findAutowiringMetadata(beanName, bean.getClass(), pvs);try {metadata.inject(bean, beanName, pvs);}catch (BeanCreationException ex) {throw ex;}catch (Throwable ex) {throw new BeanCreationException(beanName, "Injection of autowired dependencies failed", ex);}return pvs;}
}

执行流程

  1. Spring 容器扫描带有 @Autowired 注解的属性。
  2. 根据属性的类型在容器中查找匹配的 bean。
  3. 如果找到多个相同类型的 bean,再根据属性名称进行匹配。
  4. 将匹配到的 bean 实例注入到目标属性。

二、@Resource 注解

@Resource 是 JSR-250 规范定义的注解,既可以按照名称进行装配,也可以按照类型进行装配。

源码分析

@Resource 的处理在 Spring 的 CommonAnnotationBeanPostProcessor 类中。

代码入口:

public class CommonAnnotationBeanPostProcessor extends InitDestroyAnnotationBeanPostProcessor implements MergedBeanDefinitionPostProcessor {@Overridepublic PropertyValues postProcessProperties(PropertyValues pvs, Object bean, String beanName) {/*** 根据当前bean 查找出来所有添加了@Resource 属性的* 根据属性实例化 一些注入器*/InjectionMetadata metadata = findResourceMetadata(beanName, bean.getClass(), pvs);try {metadata.inject(bean, beanName, pvs);}catch (Throwable ex) {throw new BeanCreationException(beanName, "Injection of resource dependencies failed", ex);}return pvs;}
}

执行流程

  1. Spring 容器扫描带有 @Resource注解的属性。
  2. 判断是@Resource注解中有名字,并且根据name在spring容器中找不到对应的bean,那么就按照@AutoWired的注入方式进行注入
  3. 条件2 不成立的话那么就按照名字获取一个bean进行注入
http://www.yayakq.cn/news/623553/

相关文章:

  • 做的比较好的车载嗨曲网站开发公司终止函内容
  • 怎么做淘宝返利网站太原定制网站开发制作
  • 石家庄商城网站建设惠州市建设规划局网站
  • 个人网站页面设计作品橙色网站后台模板
  • 手机网站微信支付接口开发教程长宁广州网站建设
  • 实业有限公司网站怎么做手机网站关键词排
  • 网站基本设置镇江网站制作服务
  • 厦门湖里区建设局网站北京网站建设服务中心
  • 网站制作 台州南康网站建设公司
  • 慈溪做无痛同济 amp 网站国家高新技术企业认定管理工作网
  • 海洋网站建设怎么样资源网站的建设
  • 自学网站开发难吗西安模板网站建设套餐
  • 织梦学校网站h5代码用什么软件编程
  • 手机上有那种网站吗深圳seo优化外包
  • 推广网站有效的方法网站建设与开发开题报告
  • 哪里网站备案最快如何做自己的电影网站
  • 东莞智通人才网官方网站在自己电脑上做网站
  • 网站开发项目建设规范杭州网站
  • 广东石油化工建设集团网站莱芜网站优化是什么
  • 江阴外贸网站设计咨询公司logo
  • 比较有名的建筑公司热狗网站排名优化外包
  • 网站开发交易平台做301网站打不开
  • 门设计的网站建设html5网站管理系统
  • 个人微信管理工具wordpress谷歌seo
  • 百度推广网站可以链接到同公司另一个网站吗如何在网站中做二级下拉菜单
  • 广州网站建设 易企建站公司镇江企业网站
  • 建站公司走量渠道响应式网站建站平台
  • 哪些网站是jsp做的网站建设公司小程序
  • 电脑网站wordpress添加分类筛选手表
  • php简易企业网站源码饰品设计制作培训