首页 > 其他分享 >【02期】你能说说Spring框架中Bean的生命周期吗?

【02期】你能说说Spring框架中Bean的生命周期吗?

时间:2022-12-10 23:22:57浏览次数:32  
标签:02 调用 配置文件 Spring 配置 接口 Bean

首先简单说一下(以下为一个回答的参考模板)

1、实例化一个Bean--也就是我们常说的new;

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

3、如果这个Bean已经实现了BeanNameAware接口,会调用它实现的setBeanName(String)方法,此处传递的就是Spring配置文件中Bean的id值

4、如果这个Bean已经实现了BeanFactoryAware接口,会调用它实现的setBeanFactory(setBeanFactory(BeanFactory)传递的是Spring工厂自身(可以用这个方式来获取其它Bean,只需在Spring配置文件中配置一个普通的Bean就可以);

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

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

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

8、如果这个Bean关联了BeanPostProcessor接口,将会调用postProcessAfterInitialization(Object obj, String s)方法、;

注:以上工作完成以后就可以应用这个Bean了,那这个Bean是一个Singleton的,所以一般情况下我们调用同一个id的Bean会是在内容地址相同的实例,当然在Spring配置文件中也可以配置非Singleton,这里我们不做赘述。

9、当Bean不再需要时,会经过清理阶段,如果Bean实现了DisposableBean这个接口,会调用那个其实现的destroy()方法;

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

结合代码理解一下

1、Bean的定义

Spring通常通过配置文件定义Bean。如:

<?xml version=”1.0″ encoding=”UTF-8″?>

<beans xmlns=”http://www.springframework.org/schema/beans”
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=”http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd”>

<bean id=”HelloWorld” class=”com.pqf.beans.HelloWorld”>
    <property name=”msg”>
       <value>HelloWorld</value>
    </property>
</bean>

</beans>

 

标签:02,调用,配置文件,Spring,配置,接口,Bean
From: https://www.cnblogs.com/kisshappyboy/p/16972596.html

相关文章

  • 《Emergent Cooperation from Mutual Acknowledgment Exchange》 2022-AAMAS
    从相互交换确认中产生合作总结:为了改进传统的激励其他代理人机制,其存在隐私侵犯的问题,文中提出一种两阶段的请求和回应机制,即即使想要激励其他人送出的东西还需要得到......
  • 编程路-基础提升-第六周-02
    函数进阶编程真正常用的是基于简单函数的复杂函数,需要对其真正理解和熟悉后,并经常应用才能牢记并会使用。变量作用域 概括可变数据类型使用方法或者全局声明可以......
  • IDEA2022双击图标打不开,无反应?
    分析:Win10电脑以前安装过IDEA2019,并且是解决试用版本第三方jar包配置​​jetbrains-agent.jar​​,直接运行bin目录下idea.bat报错尝试将JDK1.8升级到11问题一样解决方法:打......
  • spring mvc环境之Aop切面的xml配置和注解(AspectJ)(十)
     Spring的AOP引入步骤:1.引入jar,pom.xml加入spring-aop坐标(一般引入数据库事务的时候已经引用了).2.创建目标接口和目标对象(bean类,service或dao层).3.创建切面类(类......
  • Blog3:nchu-software-oop-2022-6~8
    Blog3:nchu-software-oop-2022-6~8一、前言不知不觉,已到了本学期末尾,面向对象程序设计这门课也已经结课。课程虽然结束了,但需要学习和巩固的知识点还有很多。同时,这也......
  • Spring,SpringMVC,SpringBoot,SpringCloud有什么区别和联系?
    简单介绍Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。Spring使你能够编写更干净、更可管理、并且更易于测试的代码。SpringMVC是Spring的一个模块,一......
  • 2022年浙大城市学院新生程序设计竞赛(同步赛)
    A.OP(Nowcoder48876A)题目大意输出fengqibisheng,yingyueerlai!解题思路python最快我错了,php直接打这个字符串就可以了神奇的代码print("fengqibisheng,yingy......
  • 2022-6.824-Lab2:Raft
    0.准备工作lab地址:https://pdos.csail.mit.edu/6.824/labs/lab-raft.htmlgithub地址:https://github.com/lawliet9712/MIT-6.824论文翻译地址:https://blog.csdn.net......
  • 【spring框架】@componentscan, @import, @configuration区别
    @configuration:这个注解用来代替spring容器的xml配置文件。具体就是配置文件中的标签。被@configuration标注的类,他里边所有的被@bean标注的方法都会被执行,这些方法返回的......
  • BUUCTF之[BJDCTF2020]BJD hamburger competition (复现)
    一个老八把我整不会了,看其他师傅的wp才知道,这个是C#和unity开发的游戏,所以我们用dnspy进行反编译下面是复现过程看到是unity程序,上网查了相关参考,一般是用js或者c#进行......