美文网首页
Spring Bean装配方式byName与byType的理解

Spring Bean装配方式byName与byType的理解

作者: 鸿雁长飞鱼龙潜跃 | 来源:发表于2019-06-21 14:23 被阅读0次

我们这里讨论的Bean装配,指的是AbstractBeanDefinition类中的下面4个属性:

AUTOWIRE_NO = 0;

AUTOWIRE_BY_NAME = 1;

AUTOWIRE_BY_TYPE = 2;

AUTOWIRE_BY_CONSTRUCTOR = 3;

一,AUTOWIRE_BY_NAME与AUTOWIRE_BY_TYPE的区别

首先需要明确一点:AUTOWIRE_BY_NAME还是AUTOWIRE_BY_TYPE,是使用XML文件来配置Bean依赖,这个和Spring注解的自动装配没有关系。Spring的@Autowire注解是不能指定byName还是byType的。

使用XML配置文件注入Bean是,有个属性是autowire,可选值有byName和byType,我们讨论的就是这个。

OK,范围确定了,我们开始吧。

首先,我们来看结论:

byName:根据属性名称自动装配。就是根据XML文件中的bean标签的id进行匹配。每次配置bean时,必须指定id,这个id就是beanName。

byType:根据属性的类型自动装配。这个理解起来有点费劲,不仔细研究的话,根本理解不了。这里的属性是什么?是我们需要注入的bean,也就是我们在一个Service实现类中定义的Dao接口对象。这个说的够具体了吧,我们还会给这个Dao接口提供setter方法以便注入。

属性类型是什么呢?就是Dao的具体实现类,比如XxxDaoImpl.java。加入我们配置了2个XxxDaoImpl的bean,一个id是xxxDao1,一个id是xxxDao2,那么如果我们使用byType注入,就会报错。因为Spring根据类型去查询,找到了2个。

相关文章

网友评论

      本文标题:Spring Bean装配方式byName与byType的理解

      本文链接:https://www.haomeiwen.com/subject/hipyqctx.html