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 的错误。