美文网首页
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