このペーパーの主な研究は、次のように、Spring Boot AOP録音方法の実行時間の実装コードです。
パフォーマンスを最適化するには、最初に各メソッドの実行時間をカウントする必要があります。メソッドの前後にログを直接出力することはあまりにも面倒です。 AOPを使用して、時間統計を追加できます
<Dependency> groupId> org.springframework.boot </groupid> <artifactid> spring-boot-starter-aop </artifactid> </dependency>
spring.aop.auto = true
spring.aop.autoプロパティはデフォルトで有効になっています。つまり、AOP依存関係が導入されている限り、 @enableaspectjautoproxyがデフォルトで追加されています。 @enableaspectjautoproxyなどの不要な情報を追加しないでください!
@component@sasdepublic class logaspect {private static final log = logastactory.getLog(logaspect.class);/***エントリポイントを定義します。 *説明: * *〜最初の *は、修飾子と返品値を表します。 * 〜2番目の *は、Webパッケージまたはサブパッケージで定義されます * 〜3番目の *メソッド *〜..任意のパラメーターを一致させます。 */@pointcut( "execution(*com.wedo.stream.service ..*。*(..)")public void logpointcut(){}@org.aspectj.lang.annotation.around( "logpointcut()")public object doaround(proceedingjoinpoint joinpoint) "/t"); long start = system.currenttimemillis(); try {object result = joinpoint.proced(); long end = system.currenttimemillis(); log.error( "+++++++ aubsion abrow"+joinpoint+"/chuse time:"+(end -start)+"ms!") System.CurrentTimeMillis(); log.Error( "+++++++ abour"+joinpoint+"/tuse time:"+(end -start)+"ms:"+e.getmessage();}}}}}}}}}}}AOPメソッドの後、値を正しく返すことができません
このプロキシメソッドは値を返す必要があります。そうしないと、コードには返品値がありません。
//これは間違っていますが、パブリックボイドドアウンド(ProceedingJoinPoint JoinPoint){} Springのドキュメントには、Spring AOPパーツがJDKダイナミックプロキシまたはCGLIBを使用して、ターゲットオブジェクトのプロキシを作成します。プロキシターゲットが少なくとも1つのインターフェイスを実装する場合、JDKダイナミックプロキシが使用されます。このターゲットタイプによって実装されたすべてのインターフェイスはプロキシになります。ターゲットオブジェクトがインターフェイスを実装していない場合、CGLIBプロキシが作成されます。
デフォルトはJDKダイナミックプロキシで、CGLIBに変更されました
上記は、Spring Boot AOP録音方法の実行時間コードの例に関するこの記事のすべての内容です。私はそれが誰にでも役立つことを願っています。興味のある友人は、このサイトの他の関連トピックを引き続き参照できます。欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました!