Heim >Java >javaLernprogramm >Warum wird mein Spring-Filter zweimal aufgerufen, wenn er als Bean registriert ist?
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.
Um dieses Problem zu beheben, sollten Sie die Implementierung eines der folgenden Ansätze in Betracht ziehen:
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.
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!