spring工程的启动流程?bean的生命周期?提供哪些扩展点?管理事务?解决循环依赖问题的?事务传播行为有哪些?

这篇具有很好参考价值的文章主要介绍了spring工程的启动流程?bean的生命周期?提供哪些扩展点?管理事务?解决循环依赖问题的?事务传播行为有哪些?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.Spring工程的启动流程:

Spring工程的启动流程主要包括以下几个步骤:

  • 加载配置文件:Spring会读取配置文件(如XML配置文件或注解配置)来获取应用程序的配置信息。
  • 实例化并初始化IoC容器:Spring会创建并初始化IoC容器,即ApplicationContext。在这一步,Spring会解析配置文件,并将配置的Bean实例化。
  • 实例化并初始化Bean:Spring根据配置信息实例化Bean,并完成Bean的依赖注入和初始化(例如调用构造函数、属性设置和初始化回调等)。
  • 完成Bean的初始化:在所有Bean实例化后,Spring会执行Bean的初始化回调方法(如果有定义的话)。
  • 应用程序使用:容器启动后,应用程序可以使用通过容器管理的Bean来完成相应的业务逻辑。

2.Spring Bean的生命周期:

Spring Bean的生命周期包括以下几个阶段:

  • 实例化:容器实例化Bean对象。
  • 属性赋值:容器注入Bean的属性值和依赖。
  • 初始化:Bean进行一些初始化操作,可以自定义初始化方法。
  • 使用:Bean可供应用程序使用。
  • 销毁:容器关闭时,销毁Bean,可以自定义销毁方法。

3.Spring给我们开发人员提供了哪些扩展点?

Spring提供了以下扩展点:

  • BeanPostProcessor:可以在Bean实例化和初始化前后对Bean进行自定义处理。
  • BeanFactoryPostProcessor:可以在容器实例化和配置所有Bean之后,对BeanFactory进行自定义处理。
  • InitializingBean和DisposableBean:用于在Bean的初始化和销毁阶段执行一些额外操作。
  • @PostConstruct和@PreDestroy:通过注解方式定义Bean的初始化和销毁方法。
  • BeanDefinitionRegistryPostProcessor:用于在Bean定义加载前对BeanDefinition进行自定义处理。

4.Spring如何管理事务?

Spring通过AOP(面向切面编程)和事务管理器来管理事务。

  • 在Spring中,我们可以通过@Transactional注解或XML配置来标记事务的边界。
  • 当方法被@Transactional注解标记时,Spring将为该方法创建一个事务,并在方法执行前后启动和提交事务。如果方法抛出异常,则会回滚事务。Spring使用事务管理器来处理底层数据库事务的提交和回滚。

5.Spring是如何解决循环依赖问题的?

Spring使用了三个主要的解决循环依赖的机制:

  • 提前暴露Bean(Early Bean Post-Processors):Spring容器在创建Bean实例的过程中,会提前暴露尚未完全初始化的Bean实例。这意味着在创建Bean的过程中,即使发生循环依赖,也能够获取到尚未初始化的Bean实例的引用,从而解决了循环依赖的问题。

  • 三级缓存(Three-Level Cache):Spring使用三级缓存来处理循环依赖。在创建Bean的过程中,Spring首先会将正在创建的Bean实例放入第一级缓存。然后,它会创建Bean的实例并放入第二级缓存,但在实例化之前,会解析依赖关系并注入尚未初始化的Bean引用。最后,当Bean实例完全创建并初始化后,它会放入第三级缓存。通过使用三级缓存,Spring能够在创建Bean实例的过程中解决循环依赖的问题。

  • 通过代理实现解决循环依赖(通过CGLIB创建代理对象):当Spring检测到循环依赖无法通过前两种方式解决时,它会尝试使用代理对象来解决循环依赖。对于需要循环依赖的Bean,Spring会创建一个代理对象来代替原始的Bean实例。当其他Bean依赖于该Bean时,Spring会注入这个代理对象。代理对象在真正被调用时,会触发Spring创建并注入真正的Bean实例,从而解决了循环依赖的问题。

6.Spring中的事务传播行为有哪些?

Spring定义了以下事务传播行为:
spring工程的启动流程?bean的生命周期?提供哪些扩展点?管理事务?解决循环依赖问题的?事务传播行为有哪些?,八股合集,spring,java,后端
required supports

REQUIRED:如果当前存在事务,则加入该事务,如果不存在,则新建一个事务。
SUPPORTS:如果当前存在事务,则加入该事务,如果不存在,则以非事务方式执行。
MANDATORY:要求当前存在事务,如果不存在则抛出异常。
REQUIRES_NEW:新建一个事务,并挂起当前事务(如果存在)。
NOT_SUPPORTED:以非事务方式执行,如果当前存在事务,则挂起该事务。
NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。
NESTED:如果当前存在事务,则在嵌套事务中执行,如果不存在,则执行与REQUIRED相同的行为。文章来源地址https://www.toymoban.com/news/detail-523848.html

到了这里,关于spring工程的启动流程?bean的生命周期?提供哪些扩展点?管理事务?解决循环依赖问题的?事务传播行为有哪些?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【框架源码】Spring源码解析之Bean生命周期流程

    观看本文前,我们先思考一个问题,什么是Spring的bean的生命周期?这也是我们在面试的时候,面试官常问的一个问题。 在没有Spring之前,我们创建对象的时候,采用new的方式,当对象不在被使用的时候,由Java的垃圾回收机制回收。 而 Spring 中的对象是 bean,bean 和普通的 J

    2024年02月09日
    浏览(44)
  • 【Spring 】执行流程解析:了解Bean的作用域及生命周期

     哈喽,哈喽,大家好~ 我是你们的老朋友: 保护小周ღ    今天给大家带来的是 Spring 项目的执行流程解析  和 Bean 对象的6 种作用域 以及 生命周期 , 本文将为大家讲解,一起来看看叭~ 本期收录于博主的专栏 :JavaEE_保护小周ღ的博客-CSDN博客 适用于编程初学者,感兴趣

    2024年02月16日
    浏览(40)
  • @Autowired和@Resource注解之间的关系区别,Bean的作用域和生命周期,Spring的执行流程

    目录 一. @Autowired 和 @Resource 注解 二. Bean的作用域  1. singleton(单例模式) 2. prototype(原型模式)(多例模式) 3. 请求作用域:request 4. 会话作用域:session 三. Spring 的执行流程 四. Bean 的生命周期   1. 实例化  2. 设置属性  3. Bean 初始化      3.1 执行各种各种 Aware 通知;     

    2024年02月04日
    浏览(63)
  • 【Spring】—— bean生命周期

    1、初始化容器 1)创建对象(分配内存) 2)执行构造方法 3)执行属性注入(set操作) 4)执行bean初始化方法 2、使用bean 1)执行业务操作 3、关闭/销毁容器 1)执行bean销毁方法

    2024年02月02日
    浏览(49)
  • Spring:Bean生命周期

    Bean 生命周期 是 bean 对象从创建到销毁的整个过程。 简单的 Bean 生命周期的过程: 1.实例化(调用构造方法对 bean 进行实例化) 2.依赖注入(调用 set 方法对 bean 进行赋值) 3.初始化(手动配置 xml 文件中 bean 标签的 init-method 属性值,来指定调用对应的初始化方法) 4.使用

    2024年02月13日
    浏览(42)
  • Spring bean 生命周期

    在互联网领域中,Spring框架扮演着重要的角色。作为一个开源的Java应用程序开发框架,Spring提供了一种灵活而强大的方式来构建可扩展的应用程序。Spring框架中的一个重要概念是Bean,它是Spring应用程序的基本构建块之一。了解Spring Bean的生命周期对于充分利用Spring框架的功能

    2024年02月11日
    浏览(46)
  • 【spring】spring bean的生命周期

    spring bean的生命周期 简介 本文测试并且介绍了spring中bean的生命周期,如果只想知道结果可以跳到最后一部分直接查看。 一、bean的创建阶段 spring中的bean是何时创建的? 在spring中有一个非常重要的注解,叫做**@Scope**,这个注解是用来控制spring中的bean是否是单例的,一般情况

    2024年02月15日
    浏览(52)
  • Spring Bean的生命周期

    Bean生命周期的整个执行过程描述如下: 1、根据配置情况调用Bean构造方法或工厂方法实例化 Bean。 2、利用依赖注入完成Bean中所有属性值的配置注入。 3、如果Bean 实现了BeanNameAware 接口,则 Spring调用Bean的setBeanName()方法传入当前Bean的id值。 4、如果Bean实现了BeanFactoryAware 接口

    2023年04月22日
    浏览(64)
  • Spring -- Bean的生命周期

    Spring容器在进行实例化时,会将xml配置的bean的信息封装成一个BeanDefinition对象,Spring根据BeanDefinition来创建Bean对象,里面有很多的属性用来描述Bean   BeanDefinition 中几个重要方法如下 beanClassName:bean 的类名 initMethodName:初始化方法名称 properryValues:bean 的属性值 scope:作用域

    2024年02月15日
    浏览(54)
  • 【Spring】Spring的Bean的生命周期

    作者简介:大家好,我是五度鱼,一个普通的Java领域博主,不停输出Java技术博客和干货 。 座右铭:锲而不舍,金石可镂 。 个人主页:五度鱼学Java的主页 在 Java 中, Bean 是一个重要的概念,它代表了应用程序中的一个对象。在开发中,我们经常使用 Bean 来管理对象的生命

    2024年01月16日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包