bean的生命周期
bean的生命周期
一、流程图二、各环节介绍spring管理bean,通过反射到构造方法,实例化bean对象Bean实例化后对将Bean的引入和值注入到Bean的属性中BeanameAware.setBeaname(),获取设置bean的名称BeanFactoryAware.setBeanFactory(),获取BeanFactory容器实例即获取beanApplicationContext
bean的生命周期
一、流程图
二、各环节介绍
- spring管理bean,通过反射到构造方法,实例化bean对象
- Bean实例化后对将Bean的引入和值注入到Bean的属性中
- BeanameAware.setBeaname(),获取设置bean的名称
- BeanFactoryAware.setBeanFactory(),获取BeanFactory容器实例即获取bean
- ApplicationContextAware.setApplicationContext(),获取bean所在应用上下文引用
- BeanPostProcessor.postProcessBeforeInitialization(),前置处理器,获取bean,为bean填充属性
- InitializingBean.afterPropertiesSet(),初始化方法
- bean使用init-method声明了初始化方法
- BeanPostProcessor.postProcessBeforeInitialization(),后置处理器,获取bean
- DisposableBean.destory(),销毁方法
- bean使用destory-method声明了销毁方法
三、代码测试
代码语言:javascript代码运行次数:0运行复制public class Book implements BeanameAware, BeanFactoryAware, ApplicationContextAware,
InitializingBean, DisposableBean {
private String bookame;
public void setBookame(String bookame) {
println("book注入属性值");
this.bookame = bookame;
}
public Book() {
println("book对象实例化");
}
@Override
public void setBeaname(String name) {
println("获取bean名字");
}
@Override
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
println("获取bean工厂实例");
}
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
println("获取应用上下文");
}
@Override
public void afterPropertiesSet() throws Exception {
println("初始化方法");
}
public void definedInit(){
println("自定义初始化方法");
}
@Override
public void destroy() throws Exception {
println("销毁方法");
}
public void definedDestroy(){
println("自定义销毁方法");
}
}
代码语言:javascript代码运行次数:0运行复制public class MyBeanPostProcessor implements BeanPostProcessor {
// 容器加载的时候会加载一些其他的bean,会调用初始化前和初始化后方法
public Object postProcessBeforeInitialization(Object bean, String beaname) throws BeansException {
if(bean instanceof Book){
println("BeanPostProcessor.before invoke");
}
return bean;
}
public Object postProcessAfterInitialization(Object bean, String beaname) throws BeansException {
if(bean instanceof Book){
println("BeanPostProcessor.after invoke");
}
return bean;
}
}
代码语言:javascript代码运行次数:0运行复制<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns=";
xmlns:xsi=";
xsi:schemaLocation=" .xsd">
<bean id="book" class="com.xc.Book" init-method="definedInit" destroy-method="definedDestroy" >
<property name="bookame" value="西游记"/>
</bean>
<bean id="myBeanPostProcessor" class="com.xc.MyBeanPostProcessor" />
</beans>
代码语言:javascript代码运行次数:0运行复制public class Client {
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
Book book = (Book) context.getBean("book");
context.destroy();
}
}
结果:
book对象实例化
book注入属性值
获取bean名字
获取bean工厂实例
获取应用上下文
BeanPostProcessor.before invoke
初始化方法
自定义初始化方法
BeanPostProcessor.after invoke
销毁方法
自定义销毁方法
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025-01-20,如有侵权请联系 cloudcommunity@tencent 删除对象生命周期容器publicsystem.html
#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
上传时间: 2025-07-20 20:45:22
上一篇:springMVC基础
下一篇:jdbc基础
推荐阅读
留言与评论(共有 14 条评论) |
本站网友 英国aa | 15分钟前 发表 |
实例化bean对象Bean实例化后对将Bean的引入和值注入到Bean的属性中BeanameAware.setBeaname() | |
本站网友 无线网络工程 | 19分钟前 发表 |
各环节介绍spring管理bean | |
本站网友 邢利斌 | 10分钟前 发表 |
DisposableBean { private String bookame; public void setBookame(String bookame) { println("book注入属性值"); this.bookame = bookame; } public Book() { println("book对象实例化"); } @Override public void setBeaname(String name) { println("获取bean名字"); } @Override public void setBeanFactory(BeanFactory beanFactory) throws BeansException { println("获取bean工厂实例"); } @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { println("获取应用上下文"); } @Override public void afterPropertiesSet() throws Exception { println("初始化方法"); } public void definedInit(){ println("自定义初始化方法"); } @Override public void destroy() throws Exception { println("销毁方法"); } public void definedDestroy(){ println("自定义销毁方法"); } }代码语言:javascript代码运行次数:0运行复制public class MyBeanPostProcessor implements BeanPostProcessor { // 容器加载的时候会加载一些其他的bean | |
本站网友 文家二手房 | 19分钟前 发表 |
DisposableBean { private String bookame; public void setBookame(String bookame) { println("book注入属性值"); this.bookame = bookame; } public Book() { println("book对象实例化"); } @Override public void setBeaname(String name) { println("获取bean名字"); } @Override public void setBeanFactory(BeanFactory beanFactory) throws BeansException { println("获取bean工厂实例"); } @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { println("获取应用上下文"); } @Override public void afterPropertiesSet() throws Exception { println("初始化方法"); } public void definedInit(){ println("自定义初始化方法"); } @Override public void destroy() throws Exception { println("销毁方法"); } public void definedDestroy(){ println("自定义销毁方法"); } }代码语言:javascript代码运行次数:0运行复制public class MyBeanPostProcessor implements BeanPostProcessor { // 容器加载的时候会加载一些其他的bean | |
本站网友 天骄之路 | 25分钟前 发表 |
BeanFactoryAware | |
本站网友 肯德基订餐官网 | 1分钟前 发表 |
获取bean所在应用上下文引用BeanPostProcessor.postProcessBeforeInitialization() | |
本站网友 酒店集团 | 29分钟前 发表 |
如有侵权请联系 cloudcommunity@tencent 删除前往查看对象生命周期容器publicsystem | |
本站网友 上海居住证新政 | 15分钟前 发表 |
DisposableBean { private String bookame; public void setBookame(String bookame) { println("book注入属性值"); this.bookame = bookame; } public Book() { println("book对象实例化"); } @Override public void setBeaname(String name) { println("获取bean名字"); } @Override public void setBeanFactory(BeanFactory beanFactory) throws BeansException { println("获取bean工厂实例"); } @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { println("获取应用上下文"); } @Override public void afterPropertiesSet() throws Exception { println("初始化方法"); } public void definedInit(){ println("自定义初始化方法"); } @Override public void destroy() throws Exception { println("销毁方法"); } public void definedDestroy(){ println("自定义销毁方法"); } }代码语言:javascript代码运行次数:0运行复制public class MyBeanPostProcessor implements BeanPostProcessor { // 容器加载的时候会加载一些其他的bean | |
本站网友 米醋的作用 | 2分钟前 发表 |
流程图二 | |
本站网友 好孕汤 | 7分钟前 发表 |
InitializingBean | |
本站网友 远洋大亚物流 | 23分钟前 发表 |
后置处理器 | |
本站网友 世纪同城快递查询 | 24分钟前 发表 |
实例化bean对象Bean实例化后对将Bean的引入和值注入到Bean的属性中BeanameAware.setBeaname() | |
本站网友 3389远程连接器 | 29分钟前 发表 |
代码测试代码语言:javascript代码运行次数:0运行复制public class Book implements BeanameAware |