Événements REST de données de printemps avec @RepositoryEventHandler

Événements REST de données de printemps avec @RepositoryEventHandler

1. introduction

Lorsqu'il travaille avec une entité, l'exportateur REST gère les opérations de création, d'enregistrement et de suppression d'événements. We can use an ApplicationListener to listen to these events and execute a function when the particular action is performed.

Alternativement, nous pouvonsuse annotated handler which filters events based on domain type.

2. Écrire un gestionnaire annoté

LesApplicationListener ne font pas de distinction entre les types d'entités; maiswith the annotated handler, we can filter events based on domain type.

Nous pouvons déclarer un gestionnaire d'événements basé sur des annotations en ajoutant l'annotation@RepositoryEventHandler sur un POJO. En conséquence, cela informe lesBeanPostProcessor que le POJO doit être inspecté pour les méthodes de gestion.

Dans l'exemple ci-dessous, nous annotons la classe avecRepositoryEventHandler correspondant à l'entitéAuthor – and declare méthodes relatives à différents événements avant et après correspondant à l'entitéAuthor dans la classeAuthorEventHandler :

@RepositoryEventHandler(Author.class)
public class AuthorEventHandler {
    Logger logger = Logger.getLogger("Class AuthorEventHandler");

    @HandleBeforeCreate
    public void handleAuthorBeforeCreate(Author author){
        logger.info("Inside Author Before Create....");
        String name = author.getName();
    }

    @HandleAfterCreate
    public void handleAuthorAfterCreate(Author author){
        logger.info("Inside Author After Create ....");
        String name = author.getName();
    }

    @HandleBeforeDelete
    public void handleAuthorBeforeDelete(Author author){
        logger.info("Inside Author Before Delete ....");
        String name = author.getName();
    }

    @HandleAfterDelete
    public void handleAuthorAfterDelete(Author author){
        logger.info("Inside Author After Delete ....");
        String name = author.getName();
    }
}

Ici, différentes méthodes de la classeAuthorEventHandler seront appelées en fonction de l'opération effectuée sur l'entitéAuthor.

En trouvant la classe avec l'annotation@RepositoryEventHandler, Spring parcourt les méthodes de la classe pour trouver les annotations correspondant aux événements avant et après mentionnés ci-dessous:

Before* Event Annotations – associé à avant que les annotations ne soient appelées avant que l'événement ne soit appelé.

  • BeforeCreateEvent

  • BeforeDeleteEvent

  • BeforeSaveEvent

  • BeforeLinkSaveEvent

After* Event Annotations – associé à après l'appel des annotations après l'appel de l'événement.

  • AfterLinkSaveEvent

  • AfterSaveEvent

  • AfterCreateEvent

  • AfterDeleteEvent

Nous pouvons également déclarer des méthodes avec un type d'entité différent correspondant au même type d'événement dans une classe:

@RepositoryEventHandler
public class BookEventHandler {

    @HandleBeforeCreate
    public void handleBookBeforeCreate(Book book){
        // code for before create book event
    }

    @HandleBeforeCreate
    public void handleAuthorBeforeCreate(Author author){
        // code for before create author event
    }
}

Ici, la sclasseBookEventHandler traite plus d'une entité. En trouvant la classe avec l'annotation@RepositoryEventHandler , il itère sur les méthodes et appelle l'entité respective avant l'événement de création respectif.

De plus, nous devons déclarer les gestionnaires d'événements dans la classe@Configuration qui inspecteront le bean pour les gestionnaires et les associeront aux bons événements:

@Configuration
public class RepositoryConfiguration{

    public RepositoryConfiguration(){
        super();
    }

    @Bean
    AuthorEventHandler authorEventHandler() {
        return new AuthorEventHandler();
    }

    @Bean
    BookEventHandler bookEventHandler(){
        return new BookEventHandler();
    }
}

3. Conclusion

En conclusion, cela sert d'introduction à la mise en œuvre et à la compréhension de@RepositoryEventHandler.

Dans ce rapide tutoriel, nous avons appris comment implémenter l'annotation@RepositoryEventHandler pour gérer divers événements correspondant au type d'entité.

Et, comme toujours, recherchez les échantillons de code completsover on Github.