Le modèle de publication-abonnement d'événements dans Spring Framework est un modèle de conception qui permet aux objets de communiquer en publiant et en s'abonnant à des événements sans références directes. Les éditeurs publient les événements, tandis que les abonnés reçoivent et traitent les événements. Spring fournit un modèle d'événement prêt à l'emploi basé sur les interfaces Java.util.EventListener et java.util.EventObject. La publication d'événements s'effectue via l'interface ApplicationEventPublisher et l'abonnement aux événements s'effectue en implémentant l'interface ApplicationListener et en utilisant l'annotation @EventListener. En pratique, le modèle de publication-abonnement d'événements peut être utilisé pour obtenir une communication découplée sans coupler directement les composants d'application, comme l'envoi de notifications par courrier électronique après la création d'un utilisateur.
Introduction au concept
Le modèle de publication-abonnement d'événements est un modèle de conception qui permet aux objets de communiquer entre eux sans références directes. Dans l'exemple, l'éditeur publie des événements, et les abonnés reçoivent et traitent ces événements.
Modèle d'événement dans Spring
Spring Framework fournit un modèle de publication-abonnement d'événement prêt à l'emploi, basé sur java.util.EventListener
et java de Java. util .EventObject
interface. java.util.EventListener
和 java.util.EventObject
接口。
事件发布
事件发布由 ApplicationEventPublisher
接口完成。它允许发布者通过调用 publishEvent()
方法发布事件。
代码示例:发布事件
// 事件定义 class MyEvent extends ApplicationEvent { public MyEvent(Object source) { super(source); } } // 发布器 ApplicationEventPublisher publisher = ...; publisher.publishEvent(new MyEvent(this));
事件订阅
订阅者通过实现 ApplicationListener
接口并使用 @EventListener
注解来订阅事件。
代码示例:订阅事件
// 订阅者类 public class MyEventListener implements ApplicationListener<MyEvent> { @Override public void onApplicationEvent(MyEvent event) { // 处理事件 } } // 使用 @EventListener 注解订阅 @Component public class EventListenerRegistrar { @EventListener public void handleEvent(MyEvent event) { // 处理事件 } }
实战案例
考虑一个示例应用中,需要在创建用户后发送电子邮件通知。为此,可以创建 CreateUserEvent
事件并向其添加 sendEmail()
Publication d'événements
La publication d'événements est complétée par l'interfaceApplicationEventPublisher
. Il permet aux éditeurs de publier des événements en appelant la méthode publishEvent()
. 🎜Exemple de code : publication d'événements🎜🎜// 事件定义 class CreateUserEvent extends ApplicationEvent { // ... 其他代码 public void sendEmail() { // 发送电子邮件 } } // 发布器 void onCreateUser(User user) { // ... 其他代码 publisher.publishEvent(new CreateUserEvent(user)); } // 订阅者 @EventListener public void handleEvent(CreateUserEvent event) { event.sendEmail(); }
ApplicationListener
et en utilisant l'annotation @EventListener
. 🎜🎜🎜Exemple de code : abonnement aux événements🎜🎜rrreee🎜🎜Cas pratique🎜🎜🎜Considérons un exemple d'application qui doit envoyer des notifications par e-mail après la création d'un utilisateur. Pour ce faire, créez un événement CreateUserEvent
et ajoutez-y la méthode sendEmail()
. 🎜🎜🎜Exemple de code : exemple pratique🎜🎜rrreee🎜De cette manière, le modèle de publication-abonnement d'événement de Spring fournit un moyen flexible et extensible pour permettre à nos composants d'application de communiquer entre eux sans être directement couplés. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!