Rumah > Java > javaTutorial > teks badan

Mengapa Kaedah Pintasan AOP Spring Saya Tidak Dipanggil Dalam Kaedah Lain?

Linda Hamilton
Lepaskan: 2024-10-31 16:54:30
asal
154 orang telah melayarinya

Why Doesn't My Spring AOP Intercept Method Calls Within Another Method?

Spring AOP Gagal Memintas Panggilan Kaedah dalam Kaedah Lain

Pertimbangkan dua kaedah yang ditakrifkan dalam ABC.java:< ;/p>


kaedah lompang awam1() {

method2();
Salin selepas log masuk

}

kaedah lompang awam2() {}
< ;/pre>

Untuk menggunakan AOP pada panggilan method2, anda telah menentukan kelas AOPLogger.java dengan kaedah aspek checkAccess. Dalam fail konfigurasi anda:

<br><bean id="advice" class="p.AOPLogger" /><br><aop:config> </p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><aop:pointcut id="abc" expression="execution(*p.ABC.method2(..))" />
<aop:aspect id="service" ref="advice">
    <aop:before pointcut-ref="abc" method="checkAccess" />          
</aop:aspect>
Salin selepas log masuk


Walau bagaimanapun, apabila kaedah2 digunakan, kaedah checkAccess dalam AOPLogger tidak dicetuskan.

Penjelasan

Aspek AOP digunakan pada proksi yang mengelilingi kacang. Apabila anda mendapatkan rujukan kepada kacang, anda sebenarnya tidak bekerja dengan kelas yang dinyatakan dalam konfigurasi anda. Sebaliknya, anda diberikan kelas sintetik yang melaksanakan antara muka yang sesuai, mewakilkan panggilan dan menyediakan kefungsian tambahan (cth., AOP anda).

Dalam kes ini, anda secara langsung menggunakan kaedah2 pada kelas. Jika contoh kelas itu disuntik ke dalam kacang lain sebagai kacang Spring, ia akan disuntik sebagai proksi. Akibatnya, sebarang panggilan kaedah akan dihalakan kepada proksi (dan aspek akan dicetuskan).

Penyelesaian

< p>Untuk menangani isu ini, pertimbangkan pilihan berikut:

    <li>Separate method1 and method2 into distinct beans.</li>
    <li>Employ a non-Spring AOP framework.</li>
    Salin selepas log masuk

Atas ialah kandungan terperinci Mengapa Kaedah Pintasan AOP Spring Saya Tidak Dipanggil Dalam Kaedah Lain?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Cadangan popular
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!