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

Spring自动装配

在依赖注入上除了前面我们讲的手动注入的情况,Spring还非常智能地为我们提供自动向Bean注入依赖的功能,这个过程一般被称为自动装配(autowiring)。这是一个非常酷的功能,当注入的bean特别多时,它将极大地节省编写注入程序的时间,因此在开发中,非常常见。但是个人来讲,我自己还是不太喜欢用自动装配,怕出错!我喜欢在代码中明确写清楚!

Spring的自动装配有三种模式,在标签的atuowire属性里配置:byTpye(根据类型),byName(根据名称)、constructor(根据构造函数)。

在byTpye模式中,Spring容器会基于反射查看bean定义的类,然后找到与依赖类型相同的bean注入到另外的bean中,这个过程需要借助setter注入来完成,因此必须存在set方法,否则注入失败。

注意问题:

事实上byType模式可能存一种注入失败的情况,由于是基于类型的注入,因此当xml文件中存在多个相同类型名称不同的实例Bean时,Spring容器依赖注入仍然会失败,因为存在多种适合的选项,Spring容器无法知道该注入那种,此时我们需要为Spring容器提供帮助,指定注入那个Bean实例。可以通过<bean>标签的autowire-candidate设置为false来过滤那些不需要注入的实例Bean

需要了解的是如果Spring容器中没有找到可以注入的实例bean时,将不会向依赖属性值注入任何bean,这时依赖bean的属性可能为null,因此我们需要小心处理这种情况,避免不必要的奔溃。

对于constructor模式,在该模式下Spring容器同样会尝试找到那些类型与构造函数相同匹配的bean然后注入。但是用这种模式,将会写很多构造方法,显得复杂,所以不推荐使用,有兴趣的同学,下去写一下demo测试一下就行了,这里就不讲了!

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • C# 4.0 等待线程结束
  • C++ 入门14:STL 容器之向量(vector)
  • C++基础(二)
  • SourceTree rebase(变基)的使用
  • Gooxi受邀参加第三届中国数据中心服务器与设备峰会
  • AGI 之 【Hugging Face】 的【问答系统】的 [评估并改进问答Pipeline] / [ 生成式问答 ] 的简单整理
  • django ninja get not allowed 能用 put delete
  • 2.The DispatcherServlet
  • GitHub连接超时问题 Recv failure: Connection was reset
  • MacOS 通过Docker安装宝塔面板搭建PHP开发环境
  • 输入网址到网页显示的过程
  • 如何在勒索软件攻击中幸存下来:最佳备份实践、勒索拦截方案
  • 【Visual Studio】Visual Studio使用技巧及报错解决合集
  • 软件测试——测试用例
  • 【C++精华铺】12.STL list模拟实现
  • 【5+】跨webview多页面 触发事件(二)
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • C++入门教程(10):for 语句
  • CSS中外联样式表代表的含义
  • Druid 在有赞的实践
  • ECMAScript6(0):ES6简明参考手册
  • HTTP中的ETag在移动客户端的应用
  • input实现文字超出省略号功能
  • JavaScript类型识别
  • js递归,无限分级树形折叠菜单
  • js学习笔记
  • Python连接Oracle
  • SOFAMosn配置模型
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • Yii源码解读-服务定位器(Service Locator)
  • 仿天猫超市收藏抛物线动画工具库
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 普通函数和构造函数的区别
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 微服务框架lagom
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 小程序 setData 学问多
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • # Maven错误Error executing Maven
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (07)Hive——窗口函数详解
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (vue)el-cascader级联选择器按勾选的顺序传值,摆脱层级约束
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931