Penelitian utama dalam makalah ini adalah kode implementasi waktu eksekusi metode perekaman AOP Spring Boot, sebagai berikut.
Untuk mengoptimalkan kinerja, perlu untuk menghitung waktu eksekusi setiap metode terlebih dahulu. Terlalu merepotkan untuk secara langsung mengeluarkan log sebelum dan sesudah metode. Anda dapat menggunakan AOP untuk menambahkan statistik waktu
<dependency> <GroupId> org.springframework.boot </groupid> <ArTifactId> Spring-boot-starter-aop </t Artifactid> </dependency>
spring.aop.auto = true
Properti spring.aop.auto diaktifkan secara default, yang berarti bahwa selama ketergantungan AOP diperkenalkan, @enableaspectjautoproxy telah ditambahkan secara default. Ingatlah untuk tidak menambahkan informasi yang tidak perlu, seperti @EnableaspectJautoproxy!
@Component@aspectpublic kelas logaspect {private static log final log = logfactory.getLog (logaspect.class);/*** Tentukan titik masuk. * Penjelasan: * * ~ Yang pertama * mewakili pengubah dan nilai pengembalian apa pun. * ~ Yang kedua * didefinisikan dalam paket web atau subpackage * ~ metode ketiga * apa pun * ~ .. Cocokkan sejumlah parameter. */@Pointcut ("Eksekusi (*com.wedo.stream.service ..*.*(..))") public void logpointcut () {}@org.aspectj.langOnOnpoint {"logpoint {" Logpoint () (logpoint {"Logpoint {" Logpoint {"Logpoint {" Logpoint (logpoint (logpoint (logpoint (logpoint (logpoint) "/T"); Long start = System.currentTimeMillis (); coba {Object hasil = joinpoint.proCed (); long end = System.currentTimeMillis (); log.Error ("+++++++ di sekitar"+joinpoint+"/tuse waktu:"+(end - start)+"ms!"); return hasil (} hasil}}}} {end end = {end - end - end {end end); ms! "); System.CurrentTimeMillis (); log.Error ("++++++ di sekitar"+joinpoint+"/waktu tuse:"+(end - start)+"ms dengan pengecualian:"+e.getMessage ()); lempar e;}}} Setelah metode AOP tidak dapat mengembalikan nilai dengan benar
Metode proxy ini harus mengembalikan nilai, jika tidak, tidak akan ada nilai pengembalian dalam kode.
// Ini salah void public doaround (ProsidingjoinPoint goinpoint) {} Dokumentasi Spring mengatakan ini: Bagian AOP Spring menggunakan JDK Dynamic Proxy atau CGLIB untuk membuat proxy untuk objek target. Jika target proxy mengimplementasikan setidaknya satu antarmuka, proxy dinamis JDK digunakan. Semua antarmuka yang diimplementasikan oleh tipe target ini akan diproksi. Jika objek target tidak mengimplementasikan antarmuka apa pun, proxy CGLIB dibuat.
Standarnya adalah proxy dinamis JDK, diubah menjadi cglib
Di atas adalah semua konten artikel ini tentang contoh kode waktu eksekusi dari metode perekaman AOP Spring Boot. Saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke topik terkait lainnya di situs ini. Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!