当前位置:   article > 正文

Spring自动装配

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

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/839226
推荐阅读
相关标签
  

闽ICP备14008679号