インターフェイスとしてSpringbootを使用して、インターフェイスの現在の制限を実行する方法にアクセスする場合、GoogleのGuavaパッケージを使用して実装できます。もちろん、現在の制限を自分で実装することもできます。グアバの現在の制限は、長年のテストです。別のものを書く必要はありません。現在の制限の原則を理解したい場合は、関連情報を自分で確認できます。この記事では説明しません。
使用する手順
Guava関連パッケージをプロジェクトに導入します
http://mvnrepository.com/artifact/com.google.guava/guava/21.0
メイブンプロジェクト
<! - https://mvnrepository.com/artifact/com.google.guava/guava-> <dependency> <groupid> com.google.guava </groupid> <artifactid> guava </artifactid> <バージョン> 21.0 </バージョン>
Gradleプロジェクト
// https://mvnrepository.com/artifact/com.google.guava/guavacompileグループ: 'com.google.guava'、name: 'guava'、version:'21 .0 ''
SpringMVCインターセプターを書きます
SmoothburstyInterceptor.java
com.google.common.util.concurrent.ratelimiter; Import org.springframework.web.servlet.modelandview; Import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; Import Javax.servlet.http.httptservletrecreth; javax.servlet.http.httpservletResponse; Import java.util.concurrent.timeunit; public class smoothburstyinterceptor extends handlerinterceptoradapter {public enum limittype {drop、// docard wait // waiting}/*** current limiter limit; / ***現在の制限方法*/ private limittype limittype = limittype.drop; public smoothburstyinterceptor(){this.limiter = ratelimiter.create(10); }/** * @param TPSフロー制限(1秒あたりの処理) * @param limittype電流制限タイプ:待機/破棄(フロー制限に到達する) this.limittype = limittype; }/*** @param PermitsPersecond秒ごとに追加された新しいトークン* @param limittype電流制限タイプ:待機/ドロップ(制限に到達する) timeUnit.milliseConds); this.limittype = limittype; } @Override public boolean prehandle(httpservletrequest request、httpservletResponse応答、オブジェクトハンドラー)exception {if(limittype.equals(limittype.drop)){if(limiter.tryacquire()){return super.prehandle(request、response、handler); }} else {limiter.acquire(); super.prehandle(request、response、handler)を返します。 }新しい例外をスロー( "ネットワーク例外!"); } @Override public void posthandle(httpservletrequest request、httpservletResponse応答、オブジェクトハンドラー、ModelandView ModelandView)スロー{super.posthandle(request、response、handler、modelandview); } @Override public void aftercompletion(httpservletrequest request、httpservletResponse応答、オブジェクトハンドラー、例外ex)スロー{super.aftercompletion(request、response、handler、ex); } public ratelimiter getLimiter(){return limiter; } public void setlimiter(ratelimiter limiter){this.limiter = limiter; }} SpringMVCインターセプト構成
webconfig.java
@componentPublic class webconfig extends webmvcconfigureradapter {@override public void addInterceptors(interceptorregistry registry){//複数のインターセプターはインターセプターチェーンレジストリを形成します。 //現在の制限は、SmoothBurstyInterceptor.limittype.dropドロップリクエストまたはsmoothburstyinterceptor.limittype.wait waitとして構成できます。 }}上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。