Spring框架|构造方法注入

159 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第12天,点击查看活动详情

构造方法注入

构造注入是指,在构造调用者实例的同时,完成被调用者的实例化。即,使用构造器设置依赖关系。在实体类中必须提供相应参数的构造方法。

标签中用于指定参数的属性有:

  • name:指定参数名称。
  • index:指明该参数对应着构造器的第几个参数,从 0 开始。不过,该属性不要也行, 但要注意,若参数类型相同,或之间有包含关系,则需要保证赋值顺序要与构造器中的参数顺序一致。

(1)使用构造方法的参数名称注入值

//提供有参的构造方法为进行注入值\
public Student(String myname, int myage) {\
    this.name = myname;\
    this.age = myage;\
}\
public Student(String name, int age, School school) {\
    this.name = name;\
    this.age = age;\
    this.school = school;\
}

applicationContext.xml文件中:

<!--    创建学校对象,并赋值-->\
    <bean id="school" class="com.bjpowernode.pojo.s03.School">\
        <constructor-arg name="name" value="清华大学"></constructor-arg>\
        <constructor-arg name="address" value="北京海淀区"></constructor-arg>\
    </bean>\
<!--    创建学生对象,通过构造方法参数名称注入值-->\
    <bean id="stu" class="com.bjpowernode.pojo.s03.Student">\
        <constructor-arg name="age" value="22"></constructor-arg>\
        <constructor-arg name="name" value="张三"></constructor-arg>\
        <constructor-arg name="school" ref="school"></constructor-arg>\
    </bean>

测试类:

image.png

(2)使用构造方法的参数索引下标注入值

<!--    通过构造方法参数下标索引进入注入-->\
    <bean id="stuindex" class="com.bjpowernode.pojo.s03.Student">\
        <constructor-arg index="1" value="22"></constructor-arg>\
        <constructor-arg index="0" value="李四"></constructor-arg>\
        <constructor-arg index="2" ref="school"></constructor-arg>\
    </bean>

(3)不指定名称和下标索引的注入

<!--    通过构造方法参数进入注入,不指定参数名称和索引下标-->\
<bean id="stuno" class="com.bjpowernode.pojo.s03.Student">\
    <constructor-arg  value="李四"></constructor-arg>\
    <constructor-arg  value="22"></constructor-arg>\
    <constructor-arg  ref="school"></constructor-arg>\
</bean>

注意:此种方式的注入一定要按类中构造方法的参数的顺序来进行注入。

(4)注入系统的类

image.png