- 生命周期:从对象创建到对象销毁的过程
- bean生命周期
-
-
通过构造器创建bean实例(无参数构造或有参数构造)
-
-
-
为bean的属性设置值和对其他bean引用(调用set方法)
-
-
-
配置后置处理器后,执行初始化方法前的方法
-
-
-
调用bean的初始化方法(需要配置初始化的方法)
-
-
-
配置后置处理器后,执行初始化方法后的方法
-
-
-
获取bean使用
-
-
-
当容器关闭时,调用bean的销毁的方法(需要进行配置销毁的方法)
-
- 实例
User:
public class User {
private String name;
private String sex;
public User()
{
System.out.println("我是User的无参构造方法");
}
public User(String name,String sex)
{
this.name=name;
this.sex=sex;
System.out.println("我是User的双参构造方法");
}
public User(String sex)
{
this.sex=sex;
System.out.println("我是User的单参构造方法");
}
public void setName(String name) {
this.name = name;
System.out.println("调用setName方法");
}
public void setSex(String sex) {
this.sex = sex;
System.out.println("调用setSex方法");
}
public void initMethod()
{
System.out.println("我是初始化方法");
}
public void destroyMethod()
{
System.out.println("我是销毁方法");
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", sex='" + sex + '\'' +
'}';
}
}
Post:
public class Post implements BeanPostProcessor {
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
System.out.println("我是初始化方法前的方法");
return null;
}
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
System.out.println("我是初始化方法后的方法");
return null;
}
}
test:
public void test()
{
ClassPathXmlApplicationContext applicationContext=new ClassPathXmlApplicationContext("bean1.xml");
User user = applicationContext.getBean("user", User.class);
System.out.println(user);
applicationContext.close();
}
bean.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="user" class="com.zcy.www.entity.User" init-method="initMethod" destroy-method="destroyMethod">
<constructor-arg name="sex" value="男"></constructor-arg>
<property name="sex" value="晚来微风"></property>
</bean>
<bean id="beanPostProcessor" class="com.zcy.www.entity.Post"></bean>
</beans>
运行结果:
- 小总结:无