首页 > 其他分享 >04_根据代码浅入spring Bean的生命周期

04_根据代码浅入spring Bean的生命周期

时间:2024-03-26 16:33:00浏览次数:21  
标签:04 浅入 spring System bean println 执行 public out

上一篇说过相关配置的加载,下面开始将bean在spring中的生命周期,本章将先简单的执行代码查看bean的创建过程。

下面是图示:

在这里插入图片描述

代码演示:

①配置文件

在这段配置中使用到了set方法 initMethod 和 destroyMethod 创建UserBean
自定义 实现 BeanPostProcessor
<bean name="customBeanPostProcessor" class="com.gl.pojo.CustomBeanPostProcessor"/>
<bean name="user" class="com.gl.pojo.User" init-method="initMethod"  destroy-method="destroyMethod" >
	  <property name="name" value="小明"/>
</bean>

②user类
user 实现 InitializingBean DisposableBean 和自定义 initMethod、destroyMethod

public class User implements InitializingBean, DisposableBean {

	private String name;

	private int age;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		System.out.println("执行setName");
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	@Override
	public void afterPropertiesSet() throws Exception {
		System.out.println("执行InitializingBean");
	}

	@Override
	public void destroy() throws Exception {
		System.out.println("执行DisposableBean");
	}

	public void initMethod(){
		System.out.println("执行initMethod");
	}

	public void  destroyMethod(){
		System.out.println("执行destroyMethod");
	}

}

③实现BeanPostProcessor

public class CustomBeanPostProcessor implements BeanPostProcessor {

	@Override
	public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
		System.out.println("执行postProcessBeforeInitialization");
		return bean;
	}

	@Override
	public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
		System.out.println("执行postProcessAfterInitialization");
		return bean;
	}
}

④执行获取bean

public class Test {
	public static void main(String[] args) {
		AbstractApplicationContext applicationContext=new ClassPathXmlApplicationContext("spring.xml");
		User user = (User)applicationContext.getBean("user");
		System.out.println(user);
		applicationContext.close();
}

⑤执行结果

执行setName
执行postProcessBeforeInitialization
执行InitializingBean
执行initMethod
执行postProcessAfterInitialization
com.gl.pojo.User@6aa8ceb6
执行DisposableBean
执行destroyMethod
由此代码演示可以看到bean的生命周期的顺序,后续从源码来看bean如何创建的。

标签:04,浅入,spring,System,bean,println,执行,public,out
From: https://blog.csdn.net/qq_35175478/article/details/137038657

相关文章

  • SpringBoot手动取消接口执行方案
    实际开发中经常会遇到比较耗时的接口操作,但页面强制刷新或主动取消接口调用后后台还是会继续运行,特别是有大量数据库操作时会增加服务器压力,所以进行研究测试后总结了一套主动取消接口调用的解决方案自定义注解用于标记耗时接口@Retention(RetentionPolicy.RUNTIME)@Target({El......
  • windows10挂载ubuntu18.04虚拟机
    一、安装samba1、安装sudoapt-getinstallsamba2、验证安装结果,出现版本信息则安装成功。samba二、修改samba配置文件1、备份配置文件sudocp/etc/samba/smb.conf/etc/samba/smb.conf.bak2、查看备份结果 ls/etc/samba/3、修改配置文件sudovi/etc/samb......
  • 【WEEK5】学习目标及总结【SpringMVC+MySQL】【中文版】
    学习目标:彻底完成SpringMVC的学习两周完成MySQL的学习——第一周学习内容:参考视频教程【狂神说Java】SpringMVC最新教程IDEA版通俗易懂拦截器文件的上传和下载学习时间及产出:第五周MON~Fri2024.3.25【WEEK5】【DAY1】拦截器【中文版】【WEEK5】【DAY1】Inter......
  • Spring中用到的一些设计模式
    单例模式:bean默认就是单例原型模式:指定作用域为prototype工厂模式:BeanFactory模板方法:postProcessBeanFactory,onRefresh,initPropertyValue策略模式:xmlBeanDefinitionReader,PropertiesBeanDefinitionReader观察者模式:listener,event,multicast适配器模式:Adapter......
  • SpringBoot基础24_SpringBoot简介1
    一、原有Spring优缺点分析1、Spring的优点分析Spring是Java企业版(JavaEnterpriseEdition,JEE,也称J2EE)的轻量级代替品。无需开发重量级的EnterpriseJavaBean(EJB),Spring为企业级Java开发提供了一种相对简单的方法,通过依赖注入和面向切面编程,用简单的Java对象(PlainOldJava......
  • Spring AOP实现过程
    @Aspect驱动定义一个切面类Aspect即在声明的类,增加@Component@Aspect两个注解,SpringBoot中要引入spring-boot-starter-aop依赖包定义切点定义切点,并定义切点在哪些地方执行,采用PointCut注解完成,如@Pointcut(public*com.xxx.xxx..(..))规则:修饰符(可以不写,但不能......
  • Spring bean创建过程中的几个factory
    在SpringBoot启动过程中会去创建很多bean,然后交给IoC容器,创建的过程中涉及到几个比较容易混淆的factory如下BeanFactory,FactoryBean,ObjectFactory BeanFactory是一个接口,是一个bean的工厂,能够创建bean(按照bean的生命周期来创建Spring中大部分的bean实例),并提供了获取bean实例......
  • springboot学习
    SpringBoot1SpringBoot2SpringBoot3SpringBoot4SpringBoot5SpringBoot6SpringBoot7shiro简介:入门:整合shiro导包写Controller报错点击查看代码org.thymeleaf.exceptions.TemplateInputException:Errorresolvingtemplate[index],templatemightnotexistor......
  • 线上gc问题-SpringActuator的坑
    整体复盘:一个不算普通的周五中午,同事收到了大量了cpu异常的报警。根据报警表现和通过arthas查看,很明显的问题就是内存不足,疯狂无效gc。而且结合arthas和gc日志查看,老年代打满了,gc不了一点。既然问题是内存问题,那么老样子,通过jmap和heapdump文件分析。不感兴趣的可以直接看结论......
  • 【常见错误】org.springframework.web.multipart.MultipartException request is not
    检查请求类型和内容类型MultipartException 错误通常发生在请求类型不是 multipart/form-data 或者内容类型不是预期的类型时。因此,要解决这个错误,需要确保请求的类型和内容类型正确。以下是一些检查步骤:检查请求类型确保发送到服务器的请求的HTTP方法为 POST,并且Cont......