• 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测试一下就行了,这里就不讲了!

     

  • 相关阅读:
    MapReduce Shuffle源码解读
    PyTorch:GPU的使用
    Redis事务+watch+RDB+AOF+发布订阅+主从复制+哨兵模式+缓存穿透和雪崩及解决方案+使用watch实现秒杀相关
    【洛谷 P1115】最大子段和 题解(贪心算法)
    分享Python的十大库,这你一定得知道!
    你一定要知道的四个程序员接外包的网站,悄悄把技术变现!
    JUC并发包下
    指针基础 - golang版
    Debian/Ubuntu 安装 NodeJS【详细步骤】
    uniapp - 开关按钮
  • 原文地址:https://blog.csdn.net/weixin_43227851/article/details/140463720