Rumah Java javaTutorial Cara menggunakan proksi dinamik dalam Spring

Cara menggunakan proksi dinamik dalam Spring

Jan 05, 2024 am 11:39 AM
spring proksi dinamik

Langkah untuk menggunakan proksi dinamik dalam Spring: 1. Tentukan antara muka 2. Buat kelas sasaran 4. Konfigurasikan pemberitahuan; Pengenalan terperinci: 1. Untuk menentukan antara muka, anda perlu menentukan antara muka, yang akan dilaksanakan oleh objek proksi Antara muka ini mentakrifkan tingkah laku yang anda ingin laksanakan sebelum, selepas, dan apabila pengecualian dilemparkan. Buat kelas sasaran, buat kelas sasaran MyServiceImpl yang melaksanakan antara muka MyService Kelas ini mengandungi perkara yang anda mahu lakukan sebelum kaedah dipanggil, dsb.

Cara menggunakan proksi dinamik dalam Spring

Sistem pengendalian tutorial ini: sistem Windows 10, komputer DELL G3.

Dalam rangka kerja Spring, proksi dinamik ialah teknologi biasa yang digunakan untuk mencipta objek proksi secara dinamik pada masa jalan untuk melaksanakan fungsi AOP (pengaturcaraan berorientasikan aspek). Proksi dinamik membenarkan pengaturcara mentakrifkan kebimbangan silang yang boleh melaksanakan kod tertentu sebelum dan selepas kaedah dipanggil, apabila pengecualian dilemparkan, apabila melaksanakan dalam transaksi, dsb.

Berikut ialah langkah untuk melaksanakan AOP dalam Spring menggunakan proksi dinamik:

1 Tentukan antara muka: Pertama, anda perlu menentukan antara muka, yang akan dilaksanakan oleh objek proksi. Antara muka ini mentakrifkan tingkah laku yang anda mahu lakukan sebelum dan selepas panggilan kaedah, apabila pengecualian dilemparkan, dsb. Sebagai contoh, anda boleh menentukan antara muka bernama MyService yang mengandungi kaedah doSomething().

public interface MyService {  
    void doSomething();  
}
Salin selepas log masuk

2. Buat kelas sasaran: Buat kelas sasaran MyServiceImpl yang melaksanakan antara muka MyService. Kelas ini mengandungi kod yang anda ingin laksanakan sebelum, selepas, dsb. kaedah dipanggil.

public class MyServiceImpl implements MyService {  
    public void doSomething() {  
        System.out.println("Doing something...");  
    }  
}
Salin selepas log masuk

3 Cipta kelas proksi: Gunakan rangka kerja AOP yang disediakan oleh Spring untuk mencipta kelas proksi. Spring menyediakan dua jenis proksi dinamik: proksi dinamik JDK dan proksi dinamik CGLIB. Di sini kami mengambil proksi dinamik JDK sebagai contoh dan menggunakan ProxyFactoryBean untuk mencipta kelas proksi MyServiceProxy.

import org.springframework.aop.framework.ProxyFactoryBean;  
import org.springframework.context.annotation.Bean;  
import org.springframework.context.annotation.Configuration;  
  
@Configuration  
public class AppConfig {  
    @Bean  
    public MyService myService() {  
        return new MyServiceImpl();  
    }  
  
    @Bean  
    public MyServiceProxy myServiceProxy() {  
        ProxyFactoryBean factory = new ProxyFactoryBean();  
        factory.setTargetBeanName("myService"); // 指定目标对象的名字  
        factory.addAdvice(new SimpleTraceInterceptor()); // 添加通知,定义在方法调用之前、之后等场景中执行的代码  
        return (MyServiceProxy) factory.getObject(); // 获取代理对象  
    }  
}
Salin selepas log masuk

4. Konfigurasikan pemberitahuan: Dalam kelas proksi, anda perlu mengkonfigurasi pemberitahuan (Nasihat) untuk menentukan kod yang akan dilaksanakan dalam senario seperti sebelum dan selepas panggilan kaedah. Di sini kami menggunakan SimpleTraceInterceptor sebagai contoh, yang akan mengeluarkan log sebelum dan selepas panggilan kaedah. Anda boleh menyesuaikan pelaksanaan pemberitahuan mengikut keperluan.

5 Jalankan aplikasi: Lancarkan aplikasi dan uji sama ada proksi dinamik berfungsi seperti yang diharapkan. Anda boleh mengesahkan bahawa pemberitahuan dilaksanakan dengan betul dengan memanggil pelbagai kaedah pada objek sasaran. Dalam contoh di atas, apabila myServiceProxy().doSomething() dipanggil, log "Melakukan sesuatu..." akan menjadi output dan log yang sepadan akan dikeluarkan sebelum dan selepas panggilan kaedah.

Selain proksi dinamik JDK yang digunakan dalam contoh di atas, Spring juga menyediakan proksi dinamik CGLIB sebagai pilihan lain. Proksi dinamik CGLIB sesuai untuk kelas yang tidak melaksanakan antara muka Fail kelas kelas objek proksi dimuatkan melalui rangka kerja pemprosesan bytecode asm, dan subkelas dijana dengan mengubah suai bytecode. Kaedah konfigurasi menggunakan proksi dinamik CGLIB adalah serupa dengan proksi dinamik JDK, kecuali anda perlu menggunakan kelas atau kaedah konfigurasi yang berbeza semasa membuat objek proksi.

Atas ialah kandungan terperinci Cara menggunakan proksi dinamik dalam Spring. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Paradigma pengaturcaraan baharu, apabila Spring Boot bertemu OpenAI Paradigma pengaturcaraan baharu, apabila Spring Boot bertemu OpenAI Feb 01, 2024 pm 09:18 PM

Pada tahun 2023, teknologi AI telah menjadi topik hangat dan memberi impak besar kepada pelbagai industri, terutamanya dalam bidang pengaturcaraan. Orang ramai semakin menyedari kepentingan teknologi AI, dan komuniti Spring tidak terkecuali. Dengan kemajuan berterusan teknologi GenAI (General Artificial Intelligence), ia menjadi penting dan mendesak untuk memudahkan penciptaan aplikasi dengan fungsi AI. Dengan latar belakang ini, "SpringAI" muncul, bertujuan untuk memudahkan proses membangunkan aplikasi berfungsi AI, menjadikannya mudah dan intuitif serta mengelakkan kerumitan yang tidak perlu. Melalui "SpringAI", pembangun boleh membina aplikasi dengan lebih mudah dengan fungsi AI, menjadikannya lebih mudah untuk digunakan dan dikendalikan.

Gunakan Spring Boot dan Spring AI untuk membina aplikasi kecerdasan buatan generatif Gunakan Spring Boot dan Spring AI untuk membina aplikasi kecerdasan buatan generatif Apr 28, 2024 am 11:46 AM

Sebagai peneraju industri, Spring+AI menyediakan penyelesaian terkemuka untuk pelbagai industri melalui API yang berkuasa, fleksibel dan fungsi lanjutannya. Dalam topik ini, kami akan menyelidiki contoh aplikasi Spring+AI dalam pelbagai bidang Setiap kes akan menunjukkan cara Spring+AI memenuhi keperluan khusus, mencapai matlamat dan meluaskan LESSONSLEARNED ini kepada rangkaian aplikasi yang lebih luas. Saya harap topik ini dapat memberi inspirasi kepada anda untuk memahami dan menggunakan kemungkinan Spring+AI yang tidak terhingga dengan lebih mendalam. Rangka kerja Spring mempunyai sejarah lebih daripada 20 tahun dalam bidang pembangunan perisian, dan sudah 10 tahun sejak versi Spring Boot 1.0 dikeluarkan. Sekarang, tiada siapa boleh mempertikaikan Spring itu

Pelaksanaan mekanisme refleksi antara muka dan kelas abstrak di Jawa Pelaksanaan mekanisme refleksi antara muka dan kelas abstrak di Jawa May 02, 2024 pm 05:18 PM

Mekanisme pantulan membenarkan atur cara untuk mendapatkan dan mengubah suai maklumat kelas semasa runtime Ia boleh digunakan untuk melaksanakan refleksi antara muka dan kelas abstrak: Refleksi antara muka: mendapatkan objek pantulan antara muka melalui Class.forName() dan mengakses metadatanya (nama, kaedah dan. padang). Refleksi kelas abstrak: Sama seperti antara muka, anda boleh mendapatkan objek pantulan kelas abstrak dan mengakses metadata dan kaedah bukan abstraknya. Kes praktikal: Mekanisme pantulan boleh digunakan untuk melaksanakan proksi dinamik dan memintas panggilan ke kaedah antara muka pada masa jalan dengan mencipta kelas proksi secara dinamik.

Apakah kaedah pelaksanaan transaksi program musim bunga? Apakah kaedah pelaksanaan transaksi program musim bunga? Jan 08, 2024 am 10:23 AM

Cara melaksanakan transaksi terprogram musim bunga: 1. Gunakan TransactionTemplate 2. Gunakan TransactionCallback dan TransactionCallbackWithoutResult 3. Gunakan anotasi Transaksional;

Cara menetapkan tahap pengasingan transaksi dalam Spring Cara menetapkan tahap pengasingan transaksi dalam Spring Jan 26, 2024 pm 05:38 PM

Cara menetapkan tahap pengasingan transaksi dalam Spring: 1. Gunakan anotasi @Transactional 2. Tetapkan dalam fail konfigurasi Spring 3. Gunakan PlatformTransactionManager 4. Tetapkan dalam kelas konfigurasi Java. Pengenalan terperinci: 1. Gunakan anotasi @Transactional, tambah anotasi @Transactional pada kelas atau kaedah yang memerlukan pengurusan transaksi dan tetapkan tahap pengasingan dalam atribut 2. Dalam fail konfigurasi Spring, dsb.

Anotasi Musim Bunga Didedahkan: Analisis Anotasi Biasa Anotasi Musim Bunga Didedahkan: Analisis Anotasi Biasa Dec 30, 2023 am 11:28 AM

Spring ialah rangka kerja sumber terbuka yang menyediakan banyak anotasi untuk memudahkan dan meningkatkan pembangunan Java. Artikel ini akan menerangkan anotasi Spring yang biasa digunakan secara terperinci dan memberikan contoh kod khusus. @Autowired: Autowired @Autowired anotasi boleh digunakan untuk wayar secara automatik dalam bekas Spring. Apabila kami menggunakan anotasi @Autowired di mana kebergantungan diperlukan, Spring akan mencari kacang yang sepadan dalam bekas dan menyuntiknya secara automatik. Kod sampel adalah seperti berikut: @Auto

Panduan penggunaan rangka kerja kawalan kebenaran Spring Security Panduan penggunaan rangka kerja kawalan kebenaran Spring Security Feb 18, 2024 pm 05:00 PM

Dalam sistem pengurusan bahagian belakang, kawalan kebenaran akses biasanya diperlukan untuk mengehadkan keupayaan pengguna yang berbeza untuk mengakses antara muka. Jika pengguna tidak mempunyai kebenaran khusus, dia tidak boleh mengakses antara muka tertentu. Artikel ini akan menggunakan projek waynboot-mall sebagai contoh untuk memperkenalkan cara memperkenalkan rangka kerja kawalan kebenaran SpringSecurity ke dalam sistem pengurusan back-end biasa. Garis besarnya adalah seperti berikut: alamat projek waynboot-mall: https://github.com/wayn111/waynboot-mall 1. Apakah SpringSecurity SpringSecurity ialah projek sumber terbuka berdasarkan rangka kerja Spring, bertujuan untuk menyediakan keselamatan yang berkuasa dan fleksibel untuk aplikasi Java.

Penjelasan terperinci tentang kaedah pemerolehan Kacang dalam Spring Penjelasan terperinci tentang kaedah pemerolehan Kacang dalam Spring Dec 30, 2023 am 08:49 AM

Penjelasan terperinci tentang kaedah pemerolehan Kacang dalam Spring Dalam rangka kerja Spring, pemerolehan Kacang merupakan bahagian yang sangat penting. Dalam aplikasi, kita selalunya perlu menggunakan suntikan kebergantungan atau mendapatkan contoh kacang secara dinamik. Artikel ini akan memperkenalkan secara terperinci cara mendapatkan kacang dalam Spring dan memberikan contoh kod khusus. Mendapatkan anotasi Bean@Component melalui anotasi @Component ialah salah satu anotasi yang biasa digunakan dalam rangka kerja Spring. Kita boleh melakukan ini dengan menambahkan @Compone pada kelas

See all articles