bean的生命周期
默认情况下,IOC容器中bean的生命周期分为五个阶段:
- 调用构造器或者通过工厂的方式创建Bean对象
- 给bean对象的属性注入值
- 调用初始化方法,进行初始化,初始化方法是通过init-method来指定的
- 使用bean
- IOC容器关闭时,销毁Bean对象
当加入了Bean的后置处理器后,IOC容器中Bean的生命周期分为七个阶段:
- 调用构造器或者是通过工厂的方式创建Bean对象
- 给Bean对象的属性注入值
- 执行Bean的后置处理器中的post ProcessBefore Initialization
- 调用初始化方法,进行初始化,初始化方法是通过init-method来指定的
- 执行Bean的后置处理器中的post Process AfterInitalization
- 只用Bean对象
- IOC容器关闭时,销毁Bean对象
创建Bean对象的方式
1.使用构造函数创建Bean对象
在spring的配置文件中使用bean标签,配置id和class属性之后,且没有其他属性和标签时,采用的就是默认构造函数创建Bean标签,此时如果类中没有构造函数,就无法创建对象
实体类
public class Student {
private String name;
private char sex;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
反射创建student对象
<bean id="student" class="com.atxiaoyao.bean.pojo">
</bean>
2.通过静态工厂方法创建bean
静态工厂: 工厂本身不需要创建对象,通过静态方法调用
对象 = 工厂类.工厂方法名();
实例工厂: 工厂本身需要创建对象
工厂类 工厂对象 = new 工厂类();
工厂对象.get**();
工厂对象.set**();
3.通过实例工厂方法创建bean
4.实现FactoryBean工厂的接口
Bean的注入方式
- 通过构造方法注入Bean
- 通过Setter方法注入Bean
- 通过list注入Bean
- 通过Map注入Bean
Bean的作用域
作用域 | 描述 |
singleton | 在Spring IOC容器中只存在一个Bean实例。Bean以单例方式存在 |
prototype | 每次从容器中调用Bean时,都会返回 一个新的实例,即每次调用getBean()时,相关于执行了newXxxBean(); |
request | 每次http请求都会创建一个新的bean. 该作用域仅适用于web的Spring WebApplicationContext环境 |
session | 同一个Http Session共享一个Bean 不同的Session使用不同的Bean ;该作用域仅适用于web的Spring WebApplicationContext环境 |
application | 限定一个Bean的作用域为ServletContext的生命周期;该作用域仅适用于web的Spring WebApplicationContext环境 |