spring如何传播

fiy 其他 19

回复

共3条回复 我来回复
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    Spring框架的传播分为两种情况:事务传播和事件传播。

    一、事务传播
    事务传播是指在一个事务中嵌套执行一组操作,根据事务传播行为的不同,可以决定当前操作是否加入到已存在的事务中或创建一个新事务。

    Spring框架提供了七种事务传播行为:

    1. REQUIRED:如果当前存在事务,则加入到事务中执行;如果当前没有事务,则创建新的事务。
    2. SUPPORTS:如果当前存在事务,则加入到事务中执行;如果当前没有事务,则以非事务方式执行。
    3. MANDATORY:如果当前存在事务,则加入到事务中执行;如果当前没有事务,则抛出异常。
    4. REQUIRES_NEW:无论当前是否存在事务,都创建新的事务来执行。
    5. NOT_SUPPORTED:以非事务的方式执行操作,如果当前存在事务,则挂起当前事务。
    6. NEVER:以非事务的方式执行操作,如果当前存在事务,则抛出异常。
    7. NESTED:如果当前存在事务,则在当前事务的嵌套事务中执行。

    二、事件传播
    事件传播是指在Spring框架中,通过事件机制将消息传递给其他组件或模块进行处理。

    Spring框架中的事件传播主要包括以下几种方式:

    1. 同步传播:在发布事件的线程中依次触发每个监听器,并等待每个监听器的处理完成。
    2. 异步传播:在发布事件的线程中触发每个监听器,并立即返回,不等待监听器的处理完成。
    3. 有序传播:在发布事件的线程中触发每个监听器,并按照预定义的顺序依次执行。

    对于事件传播,Spring框架通过ApplicationEventPublisher接口提供了相关的API来发布事件,并通过ApplicationListener接口来定义事件监听器。

    总结:
    Spring框架的传播包括事务传播和事件传播。事务传播是指在一个事务中嵌套执行一组操作,根据事务传播行为的不同,可以决定当前操作是否加入到已存在的事务中或创建一个新事务。事件传播是指在Spring框架中,通过事件机制将消息传递给其他组件或模块进行处理,可以选择同步传播、异步传播或有序传播的方式。

    1年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    Spring可以通过以下几种方式进行传播:

    1. 事件传播:Spring框架中的应用程序上下文支持事件的发布和监听。可以在应用程序中定义自定义事件,并通过ApplicationContext对象将事件发布到整个应用程序。然后,其他组件可以通过实现ApplicationListener接口来监听并响应这些事件。这种方式可以实现组件之间的解耦和松散耦合。

    2. 方法调用传播:Spring框架中的事务管理器允许在方法调用期间进行事务传播。事务传播可以控制一个方法调用是否加入已经存在的事务,或者是否创建一个新的事务。这种方式可以确保方法间的事务行为一致,避免数据一致性问题。

    3. AOP切面传播:Spring的AOP(面向切面编程)功能可以通过定义切面、切点和通知来对方法进行拦截和增强,从而实现横向关注点的分离。在AOP中,切面定义了具体的拦截规则和增强逻辑,切点定义了拦截的目标方法,通知定义了在拦截点前后执行的逻辑。通过将切面配置到应用程序中,可以实现对特定方法的拦截和增强。

    4. 远程调用传播:Spring框架提供了远程调用的支持,可以通过RMI(远程方法调用)、Hessian、HTTP invoker等协议实现跨网络的方法调用。远程调用支持可以将应用程序的方法暴露为远程服务,其他应用程序可以通过网络调用这些服务。这种方式可以实现分布式系统的协作和协同操作。

    5. 上下文传播:Spring框架中的ApplicationContext对象可以在应用程序的不同组件之间传播上下文信息。通过将上下文对象注入到不同的组件中,在组件之间可以共享上下文信息,实现共享资源和共享状态。这种方式可以实现不同组件之间的协同工作和信息传递。

    1年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    Spring框架中的传播行为是指在事务中,方法调用之间是如何传播事务的。Spring为开发者提供了多种传播行为配置选项,以便适应不同的业务场景和需求。

    在Spring中,可以通过@Transactional注解或者编程式事务管理来配置事务的传播行为。下面将分析和讲解Spring中常用的传播行为选项和它们的操作流程。

    1. REQUIRED(默认传播行为)
      REQUIRED传播行为表示如果当前上下文中存在事务,则加入该事务,如果不存在事务则创建一个新的事务。

    操作流程:

    • 当前方法被调用时,检查是否存在之前的事务。如果存在,方法将在这个事务中运行;如果不存在,将创建一个新的事务。
    • 如果方法被调用的时候发生了异常,则事务将被回滚;如果方法正常结束,则事务将被提交。
    1. SUPPORTS
      SUPPORTS传播行为表示如果当前上下文中存在事务,则加入该事务,如果不存在事务则以非事务的方式运行。

    操作流程:

    • 当前方法被调用时,检查是否存在之前的事务。如果存在,方法将在这个事务中运行;如果不存在,则以非事务的方式运行。
    • 如果方法被调用的时候发生了异常,由于此时并没有事务,所以异常将直接被抛出,不会进行回滚;如果方法正常结束,则事务将被提交。
    1. MANDATORY
      MANDATORY传播行为表示当前方法必须在一个存在的事务中运行,否则将抛出异常。

    操作流程:

    • 当前方法被调用时,检查是否存在之前的事务。如果存在,方法将在这个事务中运行;如果不存在,则抛出异常。
    1. REQUIRES_NEW
      REQUIRES_NEW传播行为表示当前方法必须在一个新的事务中运行,如果当前上下文中存在事务,则将其挂起。

    操作流程:

    • 当前方法被调用时,无论当前上下文中是否存在事务,都会创建一个新的事务。
    • 如果方法被调用的时候发生了异常,则只回滚当前方法的事务;如果方法正常结束,则事务将被提交。
    • 当前方法执行完毕后,之前的事务将恢复。
    1. NOT_SUPPORTED
      NOT_SUPPORTED传播行为表示当前方法以非事务的方式运行,如果当前上下文中存在事务,则将其挂起。

    操作流程:

    • 当前方法被调用时,无论当前上下文中是否存在事务,都会以非事务的方式运行。
    • 如果方法发生了异常,则异常会被抛出;如果方法正常结束,则不会进行回滚。
    • 当前方法执行完毕后,之前的事务将恢复。
    1. NEVER
      NEVER传播行为表示当前方法必须以非事务的方式运行,如果当前上下文中存在事务,则将抛出异常。

    操作流程:

    • 当前方法被调用时,检查是否存在之前的事务。如果存在,则抛出异常;如果不存在,以非事务的方式运行。
    1. NESTED
      NESTED传播行为表示如果当前上下文中存在事务,则在该事务的嵌套事务中运行,如果不存在事务,则创建一个新的事务。

    操作流程:

    • 当前方法被调用时,检查是否存在之前的事务。如果存在,则在当前事务的嵌套事务中运行;如果不存在,则创建一个新的事务。
    • 如果方法被调用的时候发生了异常,则回滚当前方法的事务;如果方法正常结束,则事务将被提交。
    • 当前方法执行完毕后,之前的事务将恢复。

    以上是Spring框架中常见的传播行为选项和它们的操作流程。根据业务需求,开发者可以根据实际情况选择合适的传播行为配置。

    1年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部