Rumah >Java >javaTutorial >Mengapa Penapis Spring Saya Dikenakan Dua Kali, dan Bagaimana Saya Boleh Membetulkannya?
Tapis Berdaftar Dua Kali dengan Anotasi Spring Bean
Apabila mendaftarkan penapis sebagai Spring bean, adalah penting untuk mempertimbangkan potensi untuk berbilang seruan . Dalam senario tertentu, penapis mungkin dicetuskan dua kali, seperti yang diperhatikan dalam isu berikut:
Isu:
Seorang pengguna mentakrifkan penapis, A, yang memanjangkan GenericFilterBean Spring . Apabila penapis ini didaftarkan sebagai kacang dalam konfigurasi Spring Security, seruan tambahan akan diperhatikan, menghasilkan output berikut:
filter A before filter A before mycontroller invoke filter A after filter A after
Pertanyaan:
Mengapa adakah penapis dipanggil dua kali, dan bagaimana isu ini boleh berlaku diselesaikan?
Jawapan:
Seruan tambahan berlaku kerana Spring Boot secara automatik mendaftarkan sebarang kacang jenis Penapis dengan bekas servlet. Untuk mengelakkan ini, terdapat dua pilihan:
Pilihan 1: Daftar Penapis dengan Keselamatan Spring Sahaja
Elakkan daripada mendedahkan penapis sebagai kacang dan daftarkannya semata-mata dengan Spring Security , seperti berikut:
@Override protected void configure(HttpSecurity http) throws Exception { http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS); http.addFilterBefore(new A(), BasicAuthenticationFilter.class); http.csrf().disable(); }
Pilihan 2: Gunakan FilterRegistrationBean dengan Anotasi
Jika kebergantungan pendawaian automatik ke dalam penapis diperlukan, seseorang boleh mendaftarkannya sebagai kacang tetapi melumpuhkan pendaftaran automatiknya dengan bekas servlet menggunakan FilterRegistrationBean:
@Bean public FilterRegistrationBean registration(MyFilter filter) { FilterRegistrationBean<MyFilter> registration = new FilterRegistrationBean<MyFilter>(filter); registration.setEnabled(false); return registration; }
Atas ialah kandungan terperinci Mengapa Penapis Spring Saya Dikenakan Dua Kali, dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!