Spring的依赖
与继承类似,依赖也是描述bean与bean之间的关系,配置依赖之后,被依赖的bean一定先创建,再创建以来的bean。
例如:A依赖于B。则先创建B,再创建A。
代码示例。
创建User类:
package com.exambner.ioc; /** * @Author: wangwang * @Date: 2023-01-04-23:38 * @Description: */ public class User { private long id; private String name; private int age; private String sex; public User() { System.out.println("创建了User对象"); } public long getId() { return id; } public void setId(long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + ", sex='" + sex + '\'' + '}'; } }
创建Student类:
package com.exambner.ioc; import java.util.List; public class Student { private long id; private String name; private int age; public Student() { System.out.println("创建了Student对象"); } public long getId() { return id; } public void setId(long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Student{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + '}'; } }
配置文件:
<bean id="user" class="com.exambner.ioc.User"></bean> <bean id="student" class="com.exambner.ioc.Student"></bean>
因为bean默认是单例模式,是在解析配置文件时调用无参构造函数创建的bean,所以我们可以直接通过IoC容器的实例化来判断bean的创建顺序。
public static void main(String[] args) {
// 加载配置文件
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");
}
创建了User对象
创建了Student对象
这个时候我们会发现,bean的创建顺序是根据我们配置文件中的顺序,从上往下加载创建的。
如果我们希望在不改变配置文件顺序的情况下先创建Student,这时候就用到了 depends-on 去让User依赖于Student。这时就可以实现先创建Student,再创建User。
<bean id="user" class="com.exambner.ioc.User" depends-on="student"></bean> <bean id="student" class="com.exambner.ioc.Student"></bean>
创建了Student对象
创建了User对象

浙公网安备 33010602011771号