08-依赖注入方式

文章介绍了如何在Spring框架中使用Setter方法进行基本类型和引用类型的属性注入,以及通过构造器进行相同类型的注入。Setter方法注入涉及配置文件中的<property>元素,而构造器注入则通过<constructor-arg>元素完成,同时强调了注入引用类型时需先定义Bean。
摘要由CSDN通过智能技术生成

1、使用 Setter 方法进行基本类型的注入

例如,有一个 Person 类,包含了 id、name 和 age 三个基本类型的属性,可以通过 Setter 方法进行注入:

public class Person {

    private int id;
    private String name;
    private int age;

    public void setId(int id) {
        this.id = id;
    }

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

    public void setAge(int age) {
        this.age = age;
    }

    // ...
}

在 Spring 配置文件中,可以这样配置:

<bean id="person" class="com.example.Person">
    <property name="id" value="1"/>
    <property name="name" value="张三"/>
    <property name="age" value="20"/>
</bean>

其中,<property> 元素的 value 属性表示要注入的属性值。通过这种方式进行注入时,Spring 会将字符串类型的 value 值转换为相应的基本类型。需要注意的是,如果属性类型为 Boolean 或 boolean,需要使用特殊的字符串 "true" 或 "false" 来表示属性值。

2、使用 Setter 方法进行引用类型的注入,即其他类的实例

例如,有一个 Person 类,包含了一个 Address 类的实例作为它的属性,可以通过 Setter 方法将 Address 实例注入到 Person 中:

public class Person {

    private int id;
    private String name;
    private int age;
    private Address address;

    public void setId(int id) {
        this.id = id;
    }

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

    public void setAge(int age) {
        this.age = age;
    }

    public void setAddress(Address address) {
        this.address = address;
    }

    // ...
}

在Spring 配置文件中,需要先定义 Address 类的 Bean,然后在 Person 类的 Bean 中注入这个 Bean:

<bean id="address" class="com.example.Address">
    <property name="city" value="北京"/>
    <property name="street" value="前门大街"/>
</bean>

<bean id="person" class="com.example.Person">
    <property name="id" value="1"/>
    <property name="name" value="张三"/>
    <property name="age" value="20"/>
    <property name="address" ref="address"/>
</bean>

其中,<property> 元素的 ref 属性表示要注入的 Bean 的 ID,Spring 会自动将这个 ID 对应的 Bean 实例注入到 Person 中的 address 属性中。需要注意的是,在注入引用类型的属性时,被注入的 Bean 必须先通过 XML 配置文件中的 <bean> 元素进行定义,否则会出现找不到 Bean 的错误。

3、简单类型(即基本数据类型和字符串类型)的构造器注入

在 Spring 中,使用构造器进行依赖注入也是一种常见的方式。通过构造器注入,可以保证 Bean 在实例化时就已经完成了所有必要的属性注入,从而避免了由于属性缺失引发的潜在问题。

对于简单类型(即基本数据类型和字符串类型),可以通过构造器参数来进行注入。

例如,有一个 User 类,包含了 id 和 name 两个属性,可以在 User 的构造函数中定义这两个参数并注入它们:

public class User {
    
    private int id;
    private String name;
    
    public User(int id, String name) {
        this.id = id;
        this.name = name;
    }
    
    // ...
}

在 Spring 配置文件中,可以这样配置:

<bean id="user" class="com.example.User">
    <constructor-arg value="1"/>
    <constructor-arg value="张三"/>
</bean>

其中,<constructor-arg> 元素的 value 属性表示要注入的参数值。通过这种方式进行注入时,Spring 会将字符串类型的 value 值转换为相应的基本类型。

需要注意的是,如果参数类型为 Boolean 或 boolean,需要使用特殊的字符串 "true" 或 "false" 来表示参数值。同时,如果参数类型为枚举类型,可以使用枚举常量的字符串来表示参数值。

4、使用构造器进行引用类型的注入,即其他类的实例。

例如,有一个 User 类,包含了一个 Address 类的实例作为它的属性,可以在 User 的构造函数中定义 Address 参数并注入它:

public class User {
    
    private int id;
    private String name;
    private Address address;
    
    public User(int id, String name, Address address) {
        this.id = id;
        this.name = name;
        this.address = address;
    }
    
    // ...
}

在 Spring 配置文件中,需要先定义 Address 类的 Bean,然后在 User 类的 Bean 中通过构造函数将这个 Bean 注入进去:

<bean id="address" class="com.example.Address">
    <property name="city" value="北京"/>
    <property name="street" value="前门大街"/>
</bean>

<bean id="user" class="com.example.User">
    <constructor-arg value="1"/>
    <constructor-arg value="张三"/>
    <constructor-arg ref="address"/>
</bean>

其中,<constructor-arg> 元素的 ref 属性表示要注入的 Bean 的 ID,Spring 会自动将这个 ID 对应的 Bean 实例注入到 User 的构造函数中的 address 参数中。

需要注意的是,在注入引用类型的属性时,被注入的 Bean 必须先通过 XML 配置文件中的 <bean> 元素进行定义,否则会出现找不到 Bean 的错误。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值