java—如何在发布spring事件时用uml表示一个类调用另一个类方法

uqcuzwp8  于 2021-07-06  发布在  Java
关注(0)|答案(2)|浏览(421)

我想画一个uml图来表示我的SpringBoot应用程序。我是uml新手,不知道如何表示使用其他类的两个类之间的交互。我有一个发布spring事件的类和一个处理此类事件的类。发布者示例:

import org.springframework.context.ApplicationEventPublisher;

    class Publisher {
    ApplicationEventPublisher springPublisher;

    public publishEvent() {
    springPublisher.publishEvent(new SomeEvent());
    }

}

经办人:

import org.springframework.context.event.EventListener;

 class EventHandler {
    @EventListener
    public handleEvent(Event event) {
    // some processing
    }
}

因此,当我通过SpringApplicationEventPublisher发布一些事件时,我的处理程序通过@eventlistener注解的方法处理事件。但它不是该方法的直接调用。我如何在uml图上说明它?

bvuwiixz

bvuwiixz1#

类图

正如qwerty所正确指出的,在类图中,我们并不表示交互:我们表示结构,例如类、类之间的关联和依赖关系:
EventHandler 另一方面,你对 Event . 因为这是一个 @EventListener , Event 可能是 ApplicationEventPublisher 另一方面,您的代码依赖于 SomeEvent . 因为这是一个 ApplicationEventPublisher , SomeEvent 可能是 ApplicationEvent .
因此,您可能希望显示对公共对象的依赖关系 ApplicationEvent :

Spring的魔力

我不是一个springMaven,但我知道在“spring魔力”的背后是一个注解,它隐藏了一个监听器到发布者的自动注册,基于注解方法的签名。
您可能会试图在模型中显示侦听器和发布器之间的(自动)关联。但是我认为,这并不能很好地反映您的设计,因为您的模型会硬连接魔术,而您的代码在这方面是动态的。这就是为什么我上面展示的更简单的图表看起来更合适的原因:魔力是由公共事件分母引起的。只要使用正确的中间类型。

相互作用

如果你想展示相互作用的动态,就要复杂一点。例如,您可以使用一个序列图,将魔法封装在一个 :SpringFramework 生命线,并实现自动注册的消息发送到这个“虚拟”生命线。此外:
事件发送将是发布者向框架发送的消息,
事件侦听是框架发送给一个或多个侦听器的消息。
这不是真正的细节。但是图的读者不需要知道这些细节(除非他们属于spring开发团队)。所以尽可能简单,但不要更多:-)

af7jpaap

af7jpaap2#

您可以使用活动,或者在本例中最好使用序列图。这些都显示了行为。在sd中,从 PublisherEventhandler 示例(生命线)并用操作标记它 handleEvent() .
类图只显示静态结构。

相关问题