【Java第35期】:Bean的生命周期
创始人
2024-02-19 02:12:43

作者:有只小猪飞走啦

博客地址:https://blog.csdn.net/m0_62262008?type=blog

内容:1,这篇博客要分析Bean生命周期有几个阶段?
2,每个阶段的效果是什么?
3,@PostConstruct 和 @PreDestroy 各自的效果是什么?

在这里插入图片描述

文章目录

  • 前言
  • 一,Bean的生命周期的5个阶段
  • 二,每个阶段的效果
  • 三,@PostConstruct 和 @PreDestroy 各自的效果

前言

本博客内容是小博主在学习之后的总结,如果哪里有错误或者不太完善的都可以私聊我哈,如果哪里你不太理解的也可以来私聊我哦~

一,Bean的生命周期的5个阶段

所谓的⽣命周期指的是⼀个对象从诞⽣到销毁的整个⽣命过程,我们把这个过程就叫做⼀个对象的⽣命周期。所以我们来总结一下,Bean的5个生命周期是什么?
1.实例化 Bean
2.设置属性
3.Bean 初始化
3.1,执行各种通知
3.2,初始化的前置方法【xml里面定义 init-method|@PostConstruct】
3.3,初始化方法
3.4,初始化的后置方法
4.使⽤ Bean
5.销毁 Bean
以上就是Bean的5个生命周期,下面为你们一一解析每个阶段的效果:

二,每个阶段的效果

按上面的各个阶段用代码演示其生命周期:

package com.tom.controller;import org.springframework.beans.factory.BeanNameAware;
import org.springframework.stereotype.Component;import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;@Component
public class BeanLifeComponent implements BeanNameAware {@Overridepublic void setBeanName(String s) {System.out.println("执行了 Bean Name 通知:"+s);}/*** 方法命随意定义* xml中init-method指定方法*/public void initMethod(){System.out.println("执行了 init method 方法");}@PostConstructpublic void myPostConstruct(){System.out.println("执行了 PostConstruct 方法");}/*** 销毁前执行方法*/@PreDestroypublic void myPreDestroy(){System.out.println("执行了PreDestroy方法");}public void use(){System.out.println("执行了use 方法");}
}

xml配置:



  

调用类:

import com.tom.controller.*;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class App {public static void main(String[] args) {ClassPathXmlApplicationContext context =new ClassPathXmlApplicationContext("spring-config.xml");BeanLifeComponent component =context.getBean("beanLife",BeanLifeComponent.class);component.use();//关闭容器context.destroy();}}

结果:
在这里插入图片描述

三,@PostConstruct 和 @PreDestroy 各自的效果

1,当Bean被容器初始化之后,会调用@PostConstruct的注解方法。
2,当Bean在容器销毁之前,调用被@PreDestroy注解的方法
如下代码:

 @PostConstructpublic void myPostConstruct(){System.out.println("执行了 PostConstruct 方法");}/*** 销毁前执行方法*/@PreDestroypublic void myPreDestroy(){System.out.println("执行了PreDestroy方法");}

所以,PostConstruct 注释用于在依赖关系注入完成之后需要执行的方法上,以执行任何初始化。此方法必须在将类放入服务之前调用。支持依赖关系注入的所有类都必须支持此注释。即使类没有请求注入任何资源,用PostConstruct 注释的方法也必须被调用。只有一个方法可以用此注释进行注释。

PreDestroy 用与在依赖注入完成之前的方法前面执行,遵守准则:
1,该方法不得有任何参数
2,该方法的返回类型必须为 void;
3,该方法不得抛出已检查异常;
4,应用 PostConstruct 的方法可以是 public、protected、package private 或 private;
5,该方法不能是 static;该方法可以是 final;
6,该方法只会被执行一次

以上就是Bean的生命周期的各个阶段,希望对你有帮助!
关注小猪,小猪带你一起学习!
请添加图片描述

相关内容

热门资讯

北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...