Spring依赖注入

/*
*作者:呆萌老师
*☑csdn认证讲师
*☑51cto高级讲师
*☑腾讯课堂认证讲师
*☑网易云课堂认证讲师
*☑华为开发者学堂认证讲师
*☑爱奇艺千人名师计划成员
*在这里给大家分享技术、知识和生活
*各种干货,记得关注哦!
*vx:it_daimeng
*/

  

1.通过属性标签property注入
property标签

属性: name:属性名 value:属性值 ref:依赖的对象id

测试代码:

public class Drink {

    private String name;

    private String sugar;

    private float price;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSugar() {
        return sugar;
    }

    public void setSugar(String sugar) {
        this.sugar = sugar;
    }

    public float getPrice() {
        return price;
    }

    public void setPrice(float price) {
        this.price = price;
    }

    public Drink() {
        System.out.println("创建一杯饮料");
    }
}

  

<bean id="drink_01" class="com.test.pojo.Drink" >
    <property name="name" value="西瓜汁" />
    <property name="price" value="18" />
    <property name="sugar" value="半糖" />
</bean>

  

2.通过构造函数注入
constructor-arg 标签

属性: name:构造函数的参数名

​ value:传进去的值

​ ref:参数依赖的对象

​ index:参数类型和参数个数都相同,但顺序不同的时候,可以用index来设置顺序 从0开始

​ type: 参数个数相同,参数名也相同,但类型不同 ,可以用type来设置类型

测试代码:

Drink类中添加构造函数:

package com.test.pojo;

public class Drink {

    private String name;

    private String sugar;

    private float price;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSugar() {
        return sugar;
    }

    public void setSugar(String sugar) {
        this.sugar = sugar;
    }

    public float getPrice() {
        return price;
    }

    public void setPrice(float price) {
        this.price = price;
    }

    public Drink() {
        System.out.println("创建一杯饮料");
    }

    public Drink(String name) {
        this.name = name;
    }

    public Drink(String name, String sugar) {
        this.name = name;
        this.sugar = sugar;
    }

    public Drink(String name, float sugar) {
        this.name = name;
        this.price = sugar;
    }

    public Drink(float sugar,String name) {
        this.name = name;
        this.price = sugar;
    }

    @Override
    public String toString() {
        return "Drink{" +
                "name='" + name + '\'' +
                ", sugar='" + sugar + '\'' +
                ", price=" + price +
                '}';
    }
}

  

配置文件中调用不同构造函数测试:

 
<!--
构造函数的参数个数相同 参数类型也相同 但顺序不同  需要用index来指定参数的顺序
index 指的是参数的顺序

-->
<!-- 如果构造函数的参数个数相同 参数类型不同 则需要指定参数类型
    基本类型 直接用基本类型
 -->
<bean id="drink_02" class="com.test.pojo.Drink" >
         <constructor-arg name="name" value="奶茶" />
 </bean>

 <bean id="drink_03" class="com.test.pojo.Drink" >
         <constructor-arg name="name" value="珍珠奶茶" index="0" />
         <constructor-arg name="sugar" value="13" type="float" index="1" />
 </bean>

  

3.p空间注入
1)引入p空间

​ xmlns:p=“http://www.springframework.org/schema/p”

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:p="http://www.springframework.org/schema/p"       //加在xmlns属性中
       xsi:schemaLocation="http://www.springframework.org/schema/beans“ />

  

2)使用

​ p:属性名=属性值

<bean id="drink_01" class="com.test.pojo.Drink"  p:name="珍珠奶茶"
      p:price="28"  p:sugar="半糖"  />

  

posted @ 2022-09-24 22:49  呆萌老师  阅读(14)  评论(0编辑  收藏  举报