Heim >Java >javaLernprogramm >Warum wird mein Spring-Filter zweimal aufgerufen, wenn er als Bean registriert ist?

Warum wird mein Spring-Filter zweimal aufgerufen, wenn er als Bean registriert ist?

DDD
DDDOriginal
2024-12-09 15:55:12700Durchsuche

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

Filter wird bei der Registrierung als Spring Bean zweimal aufgerufen

Problem:

Ein Versuch, @Autowire mit einem Filter zu verwenden, führt zu Ergebnissen in einem unerwarteten doppelten Aufruf des Filters. Bei näherer Betrachtung wird festgestellt, dass der Spring-Container diesen zusätzlichen Aufruf auslöst, wenn der Filter als Bean registriert ist.

Lösung:

Um dieses Problem zu beheben, sollten Sie die Implementierung eines der folgenden Ansätze in Betracht ziehen:

  1. Automatische Filterregistrierung deaktivieren:

    Vermeiden Sie die Offenlegung Filtern Sie es als Bean und registrieren Sie es stattdessen manuell bei Spring Security. Dies verhindert, dass Spring Boot den Filter automatisch zweimal registriert.

  2. FilterRegistrationBean verwenden:

    Wenn eine Abhängigkeitsinjektion in den Filter erforderlich ist, muss dies der Fall sein als Bohne registriert. Um jedoch eine automatische Registrierung zu verhindern, kann eine FilterRegistrationBean verwendet werden, wobei die Eigenschaft „enabled“ auf false gesetzt ist. Beispielimplementierung:

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

Das obige ist der detaillierte Inhalt vonWarum wird mein Spring-Filter zweimal aufgerufen, wenn er als Bean registriert ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn