Rumah > Java > javaTutorial > Mengapa Penapis Spring Saya Dikenakan Dua Kali Apabila Ditakrifkan sebagai Kacang?

Mengapa Penapis Spring Saya Dikenakan Dua Kali Apabila Ditakrifkan sebagai Kacang?

DDD
Lepaskan: 2024-12-05 17:45:13
asal
741 orang telah melayarinya

Why is My Spring Filter Invoked Twice When Defined as a Bean?

Mengapa Penapis Dikenakan Dua Kali Apabila Didaftarkan sebagai Spring Bean?

Untuk memanfaatkan suntikan pergantungan Spring, adalah perkara biasa untuk mendaftarkan penapis sebagai kacang dalam Spring Boot, biasanya menggunakan @Autowire. Walau bagaimanapun, ini boleh menyebabkan penapis digunakan dua kali.

Sebab

Seperti yang anda perhatikan, Spring Boot secara automatik mendaftarkan penapis yang ditandakan sebagai kacang dengan bekas servlet. Ini bermakna penapis anda yang didaftarkan melalui @Bean akan digunakan oleh Spring Security dan juga bekas.

Penyelesaian

Terdapat dua pendekatan utama untuk menyelesaikan isu ini:

1. Cegah Pendaftaran Automatik:

Jika anda tidak perlu mengautomasikan kebergantungan ke dalam penapis anda, cuma elakkan daripada mendedahkannya sebagai kacang. Sebaliknya, takrifkannya sebagai kelas Java biasa dan daftarkannya secara manual dengan Spring Security sahaja:

http.addFilterBefore(new YourFilter(), BasicAuthenticationFilter.class);
Salin selepas log masuk

2. Lumpuhkan Pendaftaran Spring Boot:

Untuk mendaftarkan penapis anda secara manual dan masih menggunakan suntikan kebergantungan, anda boleh memanfaatkan FilterRegistrationBean:

@Bean
public FilterRegistrationBean registration(YourFilter filter) {
    FilterRegistrationBean<YourFilter> registration = new FilterRegistrationBean<>(filter);
    registration.setEnabled(false); // Disable Spring Boot registration
    return registration;
}
Salin selepas log masuk

Konfigurasi ini menghalang Spring Boot daripada mendaftarkan penapis anda tetapi membenarkan anda untuk menentukan kacang penapis untuk suntikan kebergantungan Spring.

Atas ialah kandungan terperinci Mengapa Penapis Spring Saya Dikenakan Dua Kali Apabila Ditakrifkan sebagai Kacang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan