spring 生命周期实例化和属性赋值详解以及源码
时间: 2023-12-06 21:42:01 浏览: 77
Spring 实例 源码
Spring框架是一个应用程序框架,主要目的是简化Java开发。Spring容器是Spring框架的核心,它负责管理应用程序中的所有对象。Spring容器在启动时会创建所有需要的对象,并将它们初始化和配置好,最后将它们放入容器中,供应用程序使用。Spring容器的生命周期包括实例化、属性赋值、初始化、销毁等几个阶段。
1. 实例化
Spring容器在启动时会读取配置文件,找到需要创建的对象,然后使用Java反射机制创建这些对象。Spring支持多种实例化方式,包括构造方法实例化、工厂方法实例化、静态工厂方法实例化等。
2. 属性赋值
Spring容器在创建对象后,会自动将对象的属性赋值。属性赋值有两种方式:使用setter方法和使用注解。使用setter方法时,Spring容器会调用对象的setter方法,将配置文件中的属性值赋值给对象的属性。使用注解时,需要在属性上添加相应的注解,Spring容器会自动将配置文件中的属性值赋值给注解标注的属性。
3. 初始化
Spring容器在完成属性赋值后,会调用对象的初始化方法。初始化方法可以使用注解@PostConstruct或实现接口InitializingBean来定义。在初始化方法中,可以进行一些额外的初始化工作。
4. 销毁
Spring容器在关闭时,会调用对象的销毁方法。销毁方法可以使用注解@PreDestroy或实现接口DisposableBean来定义。在销毁方法中,可以进行一些额外的销毁工作。
下面是Spring容器实例化和属性赋值的源码示例:
```java
public class Student {
private String name;
private int age;
public Student() {
System.out.println("Student被创建了");
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public void init() {
System.out.println("Student被初始化了");
}
public void destroy() {
System.out.println("Student被销毁了");
}
}
public class StudentService {
private Student student;
public StudentService() {
System.out.println("StudentService被创建了");
}
public void setStudent(Student student) {
this.student = student;
}
public void init() {
System.out.println("StudentService被初始化了");
}
public void destroy() {
System.out.println("StudentService被销毁了");
}
}
public class Main {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
StudentService studentService = (StudentService) context.getBean("studentService");
System.out.println("学生姓名:" + studentService.getStudent().getName());
System.out.println("学生年龄:" + studentService.getStudent().getAge());
}
}
```
在上面的代码中,Student类表示学生对象,StudentService类表示学生服务,Main类是启动Spring容器的入口。在Spring配置文件中,定义了一个id为"student"的学生对象和一个id为"studentService"的学生服务对象,学生服务对象依赖于学生对象。在初始化时,Spring容器会自动为学生对象和学生服务对象赋值,并调用它们的初始化方法。在销毁时,Spring容器会调用它们的销毁方法。
阅读全文