首页 > 其他分享 >Spring Bean 的生命周期,如何被管理的?

Spring Bean 的生命周期,如何被管理的?

时间:2023-11-29 14:01:56浏览次数:35  
标签:生命周期 实现 Spring 接口 Bean 调用 方法

实例化一个Bean,也就是我们通常说的new

按照Spring上下文对实例化的Bean进行配置,也就是IOC注入

如果这个Bean实现了BeanNameAware接口,会调用它实现的setBeanName(String beanId)方法,此处传递的是Spring配置文件中Bean的ID

如果这个Bean实现了BeanFactoryAware接口,会调用它实现的setBeanFactory(),传递的是Spring工厂本身(可以用这个方法获取到其他Bean)

如果这个Bean实现了ApplicationContextAware接口,会调用setApplicationContext(ApplicationContext)方法,传入Spring上下文,该方式同样可以实现步骤4,但比4更好,以为ApplicationContext是BeanFactory的子接口,有更多的实现方法

如果这个Bean关联了BeanPostProcessor接口,将会调用postProcessBeforeInitialization(Object obj, String s)方法,BeanPostProcessor经常被用作是Bean内容的更改,并且由于这个是在Bean初始化结束时调用After方法,也可用于内存或缓存技术

如果这个Bean在Spring配置文件中配置了init-method属性会自动调用其配置的初始化方法

如果这个Bean关联了BeanPostProcessor接口,将会调用postAfterInitialization(Object obj, String s)方法
注意:以上工作完成以后就可以用这个Bean了,那这个Bean是一个single的,所以一般情况下我们调用同一个ID的Bean会是在内容地址相同的实例

当Bean不再需要时,会经过清理阶段,如果Bean实现了DisposableBean接口,会调用其实现的destroy方法

最后,如果这个Bean的Spring配置中配置了destroy-method属性,会自动调用其配置的销毁方法

标签:生命周期,实现,Spring,接口,Bean,调用,方法
From: https://www.cnblogs.com/w1366/p/17864699.html

相关文章

  • SpringMVC_2023_11_28_3 SpringMVC_进阶(文件的上传--idea的配置)
    SpringMVC_进阶(文件的上传--idea的配置)项目结构......
  • SpringBoot JPA实践之EntityManage查询返回自定义DTO entityManager.createNativeQuer
    SpringBootJPA实践之EntityManage查询返回自定义DTOentityManager.createNativeQuery(sql)  在很多时候我更喜欢随意组合查询出来返回一个DTO对象的实现,JPA提供的多数查询均以返回Entity居多,它提供的EntityManager对象可以实现将SQL语句查询的结果转换为自定义DTO对象(这与......
  • SpringMVC_2023_11_28_1 SpringMVC_进阶(数据的接收)
    SpringMVC进阶2023-11-2910:13:40星期三数据的接收a)页面传递的属性名和后台接受的属性名不一致时,如何处理?@RequestParam("页面组件中的属性名")@RequestMapping(value="/login",method=RequestMethod.POST)publicStringlogin(@RequestParam("......
  • Nacos源码(三):SpringCloud-Nacos客户端注册源码分析
    1、服务注册源码入口在笔记(二):Nacos环境搭建中提到Nacos作为注册中心,在服务启动类中可通过添加可选配置注解@EnableDiscoveryClient,那么就先从这个注解入手,开启SpringCloud的Nacos注册中心的源码分析。EnableDiscoveryClient注解详情:EnableDiscoveryClientImport......
  • SpringMVC_2023_11_27_2 SpringMVC_入门(注解形式)
    SpringMVC_入门---(注解形式)2023-11-2816:31:09星期二常用的注解:@Controller:标注当前类为:处理器@RequestMapping:设置请求链接SpringMVC注解项目的搭建a) 依赖的引入<dependencies><dependency><groupId>javax.servlet</groupId><......
  • 使用React+SpringBoot开发一个协同编辑的表格文档
    本文由葡萄城技术团队发布。转载请注明出处:[葡萄城官网],葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。前言随着云计算和团队协作的兴起,协同编辑成为了许多企业和组织中必不可少的需求。通过协同编辑,多个用户可以同时对同一个文档进行编辑和更新,从而提高工作效......
  • springboot集成mybatis-plus
    集成mybatis-plus转载自:www.javaman.cn1、添加pom.xml<!--mp逆向工程--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>com.baomid......
  • 使用React+SpringBoot开发一个协同编辑的表格文档
    本文由葡萄城技术团队发布。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。前言随着云计算和团队协作的兴起,协同编辑成为了许多企业和组织中必不可少的需求。通过协同编辑,多个用户可以同时对同一个文档进行编辑和更新,从而提高工作效......
  • 你知道Spring中BeanFactoryPostProcessors是如何执行的吗?
    Spring中的BeanFactoryPostProcessor是在Spring容器实例化Bean之后,初始化之前执行的一个扩展机制。它允许开发者在Bean的实例化和初始化之前对BeanDefinition进行修改和处理,从而对Bean的创建过程进行干预和定制化。BeanFactoryPostProcessor接口定义了一个方法:postProcessBeanFac......
  • SpringBoot 文件上传及回显
    文件上传/回显SpringBoot默认tomcat上传文件大小问题(默认大小不能超过1MB)/***文件上传**@paramfile*@throwsIOException*/@PostMapping("upload")@ApiOperation("文件上传")publicvoidupload(@RequestParam("file")P......