Spring容器中Bean
转载
一.Bean的作用域
- singleton:在spring ioc中仅存在一个实例对象,bean以单例形式存在。
- prototype:每次调用getBeans()时都会返回一个新的实例。
- request:每次Http请求都会创建一个新的bean。
- session:同一个Http session共享一个bean。
二.Bean的生命周期
- instantiate bean对象实例化
- populate properties属性封装
- Bean执行setBeanName()方法
- Bean设置工厂setBeanFactory()或者上下文对象
- 执行postProcessBeforeInitialization(Bean初始化之前执行)
- Bean执行afterPropertiesSet()
- 调用指定的初始化方法
<bean init-method=" "/>
- 执行业务逻辑
- 执行DisposableBean执行destory
- 调用指定的销毁方法
<bean destory-method=" ">
package com.ibuyi.free.Case_one;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.*;
public class Man implements BeanNameAware, BeanFactoryAware, InitializingBean, DisposableBean {
private String name;
public Man(){
System.out.println("第一步:实例化对象");
}
public void setName(String name) {
System.out.println("第二步:设置对象属性");
this.name = name;
}
public void eat(){
//就是man对象自己有的方法
System.out.println("第九步:执行业务方法");
}
public void init(){
System.out.println("第七步:自定义初始化方法");
}
@Override
public void setBeanName(String s) {
//在配置文件中指定的init-method
System.out.println("第三步:设置Bean对象的名称");
}
@Override
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
System.out.println("第四步:设置工厂");
}
@Override
public void afterPropertiesSet() throws Exception {
System.out.println("第六步:属性设置后");
}
@Override
public void destroy() throws Exception {
System.out.println("第十步:执行销毁方法");
}
}
package com.ibuyi.free.Case_one;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
public class MyBeanPostProcessor implements BeanPostProcessor {
//这里任何对象完成实例化都会经过这个流程。
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
//在对象初始化之前进行的操作,可以在这里进行反向代理
System.out.println("第五步:初始化前执行");
return bean;
}
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
//初始化完成后执行的操作
System.out.println("第八步:初始化后执行");
return bean;
}
}
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。