1、bean 生命周期

bean创建—初始化—销毁
构造(对象创建):
单实例:在容器启动的时候创建对象;
多实例:在每次获取的时候创建对象;
初始化:
对象创建完成,并赋值好,调用初始化方法
销毁:
单实例,容器关闭的时候;
多实例:容器不会管理bean,容器调用销毁方法

2、自定义初始化方法和销毁方法

2.1、通过@Bean指定初始化方法(initMethod)和销毁方法(destroyMethod)

  • MainConfigLifeCycle类
@Configuration
public class MainConfigLifeCycle {@Bean(initMethod = "init", destroyMethod = "destroy")public Car car() {return new Car();}
}
  • Car类
public class Car {public Car() {System.out.println("new car");}public void init() {System.out.println("car init");}public void destroy() {System.out.println("car destroy");}
}
  • IOCTest_LifeCycle类
@Test
public void test1() {AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MainConfigLifeCycle.class);System.out.println("容器初始化");context.close();
}

2.2、通过让bean实现InitializingBean接口(定义初始化接口),DisposableBean接口(销毁接口)

  • Cat类
@Component
public class Cat implements InitializingBean,DisposableBean {public Cat() {System.out.println("new cat");}public void destroy() throws Exception {System.out.println("cat destroy");}public void afterPropertiesSet() throws Exception {System.out.println("cat afterPropertiesSet");}
}
  • MainConfigLifeCycle类
@ComponentScan("com.dav.bean")
@Configuration
public class MainConfigLifeCycle {
}
  • IOCTest_LifeCycle类
@Test
public void test1() {AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MainConfigLifeCycle.class);System.out.println("容器初始化");context.close();
}

2.3、使用JAVA的JSR250注解

@PostConstruct:在bean创建完成并且属性赋值完成;来执行初始化方法;
@PreDestroy:在容器销毁bean之前通知我们进行清理工作;

  • Dog类
@Component
public class Dog {public Dog() {System.out.println("new dog");}@PostConstructpublic void init() {System.out.println("dog @PostConstruct");}@PreDestroypublic void destroy() {System.out.println("dog @PreDestroy");}
}
  • MainConfigLifeCycle类
@ComponentScan("com.dav.bean")
@Configuration
public class MainConfigLifeCycle {
}
  • IOCTest_LifeCycle类
@Test
public void test1() {AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MainConfigLifeCycle.class);System.out.println("容器初始化");context.close();
}

springboot学习:bean生命周期相关推荐

  1. SpringBoot:Bean生命周期介绍

    SpringBoot:Bean生命周期介绍 前言 一.Bean 的生命周期介绍 二.具体操作顺序 前言 Bean 是 SpringBoot 中一个非常重要的组成部分,是面试中经常会问到的一个问题. 本 ...

  2. JavaEE互联网轻量级框架整合开发(书籍)阅读笔记(6):Spring IOC容器学习(概念、作用、Bean生命周期)...

    一.IOC控制反转概念 控制反转(IOC)是一种通过描述(在Java中可以是XML或者是注解)并通过第三方去生产或获取特定对象的方式. 主动创建模式,责任在于开发者,而在被动模式下,责任归于Ioc容器 ...

  3. springboot bean生命周期

    对于普通的Java对象,当new的时候创建对象,当它没有任何引用的时候被垃圾回收机制回收.而由Spring IoC容器托管的对象,它们的生命周期完全由容器控制. Spring IoC容器托管对象的be ...

  4. Spring学习笔记八--Bean生命周期和后置处理器

    为什么80%的码农都做不了架构师?>>>    Bean生命周期和后置处理器 IOC容器的bean生命周期 1.构造器或工厂方法建立bean实例 2.bean属性赋值,引用其他bea ...

  5. 【Spring学习】Bean生命周期

    我理解的Bean生命周期包括两个方面: Bean何时创建,何时销毁 Bean从创建到销毁的执行流程 一.Bean创建与销毁 Bean的创建时机主要由几个配置项共同来决定,包括: scope属性,决定是 ...

  6. Spring Bean生命周期: Bean的实例化

    [Spring Bean 生命周期系列]传送门 1.Spring Bean生命周期: Bean元信息的配置与解析阶段 2.Spring Bean生命周期: Bean的注册 3.Spring Bean生 ...

  7. Spring IOC详解 以及 Bean生命周期详细过程 可以硬刚面试官的文章

    面试题 来自面试官发自灵魂深处的拷问:谈谈你对spring的理解: 一脸懵逼的求职者的内心活动:啥?  具体的问题是什么?现在的面试都不按套路出牌了吗?  抛出一个这么大的问题,你让我怎么回答? 一脸 ...

  8. Spring Bean 生命周期之“我从哪里来”?懂得这个很重要

    Spring bean 的生命周期很容易理解.实例化 bean 时,可能需要执行一些初始化以使其进入可用 (Ready for Use)状态.类似地,当不再需要 bean 并将其从容器中移除时,可能需 ...

  9. 去字节面试,直接让人出门左拐:Bean 生命周期都不知道!

    Spring Bean 的生命周期,面试时非常容易问,这不,前段时间就有个粉丝去字节面试,因为不会回答这个问题,一面都没有过. 如果只讲基础知识,感觉和网上大多数文章没有区别,但是我又想写得稍微深入一 ...

最新文章

  1. pdf2htmlex linux 编译,如何安装编译pdf2htmlex实现pdf到html的格式转换功能
  2. 《Java从入门到放弃》框架入门篇:hibernate基本用法
  3. 云炬金融每日一题20211008
  4. 用gojs写的流程图demo
  5. matlab ga函数,matlab遗传算法ga函数
  6. 阿里php开发规范,【PHP开发规范】老生常谈的PSR开发规范你懂多少?
  7. mysql 查询 45 道题
  8. Linux的vi命令使用详解
  9. 隐藏于世的网站内页seo优化技术
  10. cad编程c语言,基于C.NET的AutoCAD二次开发简版.pdf
  11. css 背景颜色默认,css改变文字选择时的默认背景颜色
  12. 中国大学排行榜网站的爬取
  13. java calendar时间计算_Java Calendar计算所在时区的时间偏移量
  14. opencv小游戏(05):小车的运动
  15. c 语言printf输出,位数不够补0
  16. sv中静态属性和静态方法
  17. 2020年一线城市程序员工资大调查
  18. “秦晋之好”的来历:秦晋之好与战略结盟
  19. linux查看邮件服务状态,利用mail实时监测服务器程序状态
  20. 大数的溢出,正溢出和负溢出

热门文章

  1. Druid监控页面配置用户密码、去除Ad
  2. 数据结构与算法——链式存储(链表)的插入及删除
  3. html5绘制图形幸运大转盘,微信小程序利用canvas 绘制幸运大转盘功能
  4. 百度ai开放平台使用方法(附带例子详细步骤)
  5. IDEA跳至行首行末快捷键
  6. 【Python 实战基础】如何实现一个英汉翻译小字典
  7. 关于客户机服务器与微内核结构操作系统,第1章 操作系统概述1
  8. Gstreamer 应用开发:1-基础介绍
  9. 《卸甲笔记》-分组统计查询对比
  10. keep 虚拟路线修改器_Keep 动感单车体验:每天半小时,离瘦更近一步