zoukankan      html  css  js  c++  java
  • Spring -08 -自动注入 -byName/byType/constructor -全局使用default-autowire=” byName"

    1.在Spring 配置文件中对象名和ref=”id”id 名相同使用自动注入,可以不配置<property/>
    2.两种配置办法
       2.1在<bean>中通过 autowire=”” 配置,只对这个<bean>生效
        2.2在<beans>中通过 default-autowire=””配置,表当当前文件中所有<bean>都是全局配置内容
    3.autowire=”” 的可取值
      3.1default: 默认值,根据全局 default-autowire=””值. 默认全局和局部都没有配置情况下,相当于no.
      3.2no: 不自动注入

    public class People {   //类的关系
    private Teacher teacher;
    }
        <bean id="teacher" class="com.test.Teacher"></bean>
        <bean id="people" class="com.test.People" autowire="default">
            <property name="teacher" ref="teacher"></property>
        </bean>
        <bean id="teacher" class="com.test.Teacher"></bean>
        <bean id="people" class="com.test.People">
            <property name="teacher" ref="teacher"></property>
        </bean>

      3.3byName: 通过名称自动注入.在Spring 容器中寻找缺省的类的同名的Id

     <bean id="teacher" class="com.test.Teacher"></bean>
        <bean id="people" class="com.test.People" autowire="byName"></bean>

      3.4byType: 根据类型注入.
        3.4.1spring 容器中不可以出现两个相同类型的<bean>

       <bean id="teacher123" class="com.test.Teacher"></bean>
        <bean id="people" class="com.test.People" autowire="byType"></bean>  

         输出: People{teacher=com.test.Teacher@6093dd95}

      <bean id="teacher123" class="com.test.Teacher"></bean>
        <bean id="teacher124" class="com.test.Teacher"></bean>
        <bean id="people" class="com.test.People" autowire="byType"></bean>

    输出报错信息:expected single matching bean but found 2: teacher123,teacher124

      3.5constructor: 根据构造方法注入.
        3.5.1提供对应参数的构造方法(构造方法参数中包含注入对戏那个)

        <bean id="teacher123" class="com.test.Teacher"></bean>
        <bean id="teacher" class="com.test.Teacher"></bean>
    <!--保证constructor的入口参数和id的名称一致 -->
        <bean id="people" class="com.test.People" autowire="constructor"></bean>
    public class People {
        private Teacher teacher;
    
        public People() {
        }
    
        public People(Teacher teacher123) {
            this.teacher = teacher123;
        }
    }

      建议: 在全局使用default-autowire=” byName "

  • 相关阅读:
    实战演练:通过伪列、虚拟列实现SQL优化
    python try else
    Prince2是怎么考试的?
    Prince2是怎么考试的?
    Prince2是怎么考试的?
    Prince2是怎么考试的?
    拦截器
    拦截器
    拦截器
    拦截器
  • 原文地址:https://www.cnblogs.com/zhazhaacmer/p/10109543.html
Copyright © 2011-2022 走看看