Maison >Java >javaDidacticiel >Pourquoi mon filtre Spring est-il invoqué deux fois lorsqu'il est enregistré en tant que bean ?

Pourquoi mon filtre Spring est-il invoqué deux fois lorsqu'il est enregistré en tant que bean ?

DDD
DDDoriginal
2024-12-09 15:55:12702parcourir

Why is my Spring Filter Invoked Twice When Registered as a Bean?

Filtre invoqué deux fois lors de l'enregistrement en tant que Spring Bean

Problème :

Une tentative d'utilisation de @Autowire avec un résultat de filtre dans une double invocation inattendue du filtre. En y regardant de plus près, on observe que le conteneur Spring déclenche cette invocation supplémentaire lorsque le filtre est enregistré en tant que bean.

Solution :

Pour résoudre ce problème, envisagez de mettre en œuvre l'une des approches suivantes :

  1. Désactiver l'enregistrement automatique du filtre :

    Éviter d'exposer le filtre en tant que bean et enregistrez-le manuellement auprès de Spring Security à la place. Cela empêche Spring Boot d'enregistrer automatiquement le filtre deux fois.

  2. Utilisez FilterRegistrationBean :

    Si l'injection de dépendances dans le filtre est nécessaire, elle doit être enregistré comme haricot. Cependant, pour empêcher l'enregistrement automatique, un FilterRegistrationBean peut être utilisé avec la propriété "enabled" définie sur false. Exemple de mise en œuvre :

@Bean
public FilterRegistrationBean registration(MyFilter filter) {
    FilterRegistrationBean<MyFilter> registration = new FilterRegistrationBean<>(filter);
    registration.setEnabled(false);
    return registration;
}

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn