Saat menggunakan Springboot sebagai antarmuka untuk mengakses cara melakukan pembatasan antarmuka saat ini, kami dapat menggunakan paket guava Google untuk mengimplementasikannya. Tentu saja, kita juga dapat menerapkan pembatasan saat ini sendiri. Pembatasan saat ini di jambu adalah tes lama. Kami tidak perlu menulis yang lain. Jika Anda ingin memahami prinsip pembatasan saat ini, Anda dapat memeriksa informasi yang relevan sendiri. Artikel ini tidak akan menjelaskannya.
Petunjuk Penggunaan
Memperkenalkan Paket Terkait Guava ke Proyek
http://mvnrepository.com/artifact/com.google.guava/guava/21.0
Proyek Maven
<!-https://mvnrepository.com/artifact/com.google.guava/guava-> <dependency> <groupid> com.google.guava </groupid> <Artifactid> Guava </arttifactid> <version> 21.0 </versi </Dependency>
Proyek Gradle
// https://mvnrepository.com/artifact/com.google.guava/guavacompile grup: 'com.google.guava', nama: 'jambu guava', versi: '21 .0 '
Tulis Interceptor SpringMVC
SmoothBurstyInterceptor.java
Impor com.google.common.util.concurrent.ratelimiter; impor org.springframework.web.servlet.modelandview; impor org.springframework.web.servlet.handler.handlerinterceptoraDapter; impor javax.servlet.htp.htp.htp.hpserver; impor javax.servlet.htp.htp.htp.hpserver; impor javax.servlet.htp.htp.htprepreas; javax.servlet.http.httpservletResponse; import java.util.concurrent.timeunit; kelas publik SmoothBurstyInterceptor memperluas handlerInterceptorAdapter {public enum limittype {drop, // buang tunggu // tunggu}/** limiter saat ini* / *** Metode Batas Saat Ini*/ Private Limittype limittype = limittype.drop; publik SmoothBurstyInterceptor () {this.limiter = ratelimiter.create (10); }/** * @param TPS Limit aliran (pemrosesan per detik) * @param limittype batas arus: tunggu/buang (untuk mencapai batas aliran) */public smoothBurstyInterceptor (int tps, smoothburstyinterceptor.limittype limittype) {this.limitter = ratelimiter.create (tps); this.limittype = limittype; }/*** @param memungkinkan jumlah token baru yang ditambahkan per detik* @param limittype batas arus: tunggu/drop (untuk mencapai batas)*/public smoothburstyinterceptor (lampin double, lampin, 1000 limitpor, 1000 limitpor, 1000 limitpor, 1000, 1000 limitTypor, 1000, 1000 limitTypor, 1000, 1000, 1000 limitTypor, 1000, 1000, 1000, 1000.croate (lampin. this.limittype = limittype; } @Override Public Boolean Prehandle (permintaan httpservletRequest, respons httpservletResponse, penangan objek) melempar Exception {if (limitpe.equals (limittype.drop)) {if (limiter.tryacquire ()) {return super.prehandle (minta, respons, handler); }} else {limiter.acquire (); return super.prehandle (permintaan, respons, pawang); } lempar pengecualian baru ("Pengecualian Jaringan!"); // Pesan kesalahan yang diminta ke halaman setelah batas saat ini tercapai. } @Override public void posthandle (permintaan httpservletRequest, respons httpservletResponse, penangan objek, model dan model modelAndView) melempar pengecualian {super.posthandle (permintaan, respons, penangan, modelAndView); } @Override public void aftercompletion (permintaan httpservletRequest, respons httpservletResponse, penangan objek, pengecualian ex) melempar pengecualian {super.aftercompletion (permintaan, respons, penangan, ex); } public ratelimiter getLimiter () {return limiter; } public void setlimiter (ratelimiter limiter) {this.limiter = limiter; }} Konfigurasi Interception SpringMVC
Webconfig.java
@ComponentPublic Class WebConfig memperluas WebMvCconfigurerAdapter {@Override public void addInterceptors (InterceptorRegistry Registry) {// Multiple Interceptors membentuk rantai interceptor Registry.addInterceptor (new SmoothBurstyceptor (100, smoothburstycrycepor.pathpathpaths. // Batas saat ini dapat dikonfigurasi sebagai SmoothBurstyInterceptor.Limittype.drop Permintaan Drop atau SmoothBurstyInterceptor.Limittype.Wait tunggu, 100 adalah tarif per detik super.addinterceptors (registry); }}Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.