Rumah Java javaTutorial Analisis kaedah aplikasi AOP biasa dalam Spring

Analisis kaedah aplikasi AOP biasa dalam Spring

Dec 30, 2023 pm 02:29 PM
spring aop Kaedah permohonan

Analisis kaedah aplikasi AOP biasa dalam Spring

Analisis kaedah aplikasi biasa AOP dalam Spring

Pengenalan:
Dalam proses pembangunan perisian, pengaturcaraan berorientasikan aspek (AOP) ialah teknologi yang sangat penting, yang boleh memindahkan kod tertentu secara dinamik semasa program dijalankan. Serpihan ditenun menjadi kaedah sasaran, menyediakan fungsi dan sambungan tambahan. Sebagai rangka kerja pembangunan yang berkuasa, Spring menyediakan sokongan AOP yang kaya Artikel ini akan memperkenalkan secara terperinci kaedah aplikasi biasa AOP dalam Spring, termasuk kaedah deklaratif dan program, dan menyediakan contoh kod khusus.

1. Cara menggunakan AOP deklaratif

  1. Kaedah anotasi AspectJ
    Kaedah anotasi AspectJ ialah salah satu kaedah yang paling biasa digunakan dalam Spring AOP Ia berdasarkan sintaks AspectJ dan menggunakan anotasi untuk mentakrifkan aspek dan pemberitahuan. Apabila menggunakan kaedah anotasi AspectJ, anda perlu menambah konfigurasi <aspectj-autoproxy></aspectj-autoproxy> pada fail konfigurasi Spring untuk mendayakan sokongan AOP berasaskan anotasi. Kemudian, anda boleh menggunakan anotasi @Aspect untuk mentakrifkan aspek, digabungkan dengan @Before, @After, @Around, dsb. Anotasi untuk menentukan jenis pemberitahuan. Berikut ialah contoh mudah:
@Aspect
public class LoggingAspect {

    @Before("execution(* com.example.service.*.*(..))")
    public void beforeLogging() {
        System.out.println("Before executing service method");
    }

    @After("execution(* com.example.dao.*.*(..))")
    public void afterLogging() {
        System.out.println("After executing dao method");
    }

    @Around("@annotation(com.example.annotation.Loggable)")
    public Object loggableAdvice(ProceedingJoinPoint joinPoint) throws Throwable {
        System.out.println("Before executing method with @Loggable annotation");
        Object result = joinPoint.proceed();
        System.out.println("After executing method with @Loggable annotation");
        return result;
    }
}
Salin selepas log masuk
<aop:aspectj-autoproxy />配置添加到Spring配置文件中,以启用基于注解的AOP支持。然后,可以使用@Aspect注解来定义切面,并结合@Before@After@Around等注解来定义通知类型。下面是一个简单的示例:
<aop:config>
    <aop:aspect ref="loggingAspect">
        <aop:before method="beforeLogging" pointcut="execution(* com.example.service.*.*(..))"/>
        <aop:after method="afterLogging" pointcut="execution(* com.example.dao.*.*(..))"/>
        <aop:around method="loggableAdvice" pointcut="@annotation(com.example.annotation.Loggable)"/>
    </aop:aspect>
</aop:config>
Salin selepas log masuk

在上面的示例中,首先使用@Aspect注解来定义一个切面类LoggingAspect,然后使用@Before@After@Around注解分别定义了前置通知、后置通知和环绕通知。通过配置@Before注解中的execution属性,可以指定切点表达式,以确定哪些方法会被通知拦截。同样地,可以在@After@Around注解中使用切点表达式。

  1. XML配置方式
    除了通过注解方式,Spring AOP也可以通过XML配置的方式来实现切面和通知的定义。在使用XML配置方式时,需要在Spring配置文件中添加<aop:config>元素,并在其中声明切面和通知。下面是一个XML配置方式的示例:
ProxyFactory proxyFactory = new ProxyFactory();

proxyFactory.setTarget(new UserServiceImpl());

BeforeAdvice beforeAdvice = new BeforeAdvice() {
    @Override
    public void before(Method method, Object[] args, Object target) throws Throwable {
        System.out.println("Before executing service method");
    }
};

AfterReturningAdvice afterAdvice = new AfterReturningAdvice() {
    @Override
    public void afterReturning(Object returnValue, Method method, Object[] args, Object target) throws Throwable {
        System.out.println("After executing service method");
    }
};

proxyFactory.addAdvice(beforeAdvice);
proxyFactory.addAdvice(afterAdvice);

UserService userService = (UserService) proxyFactory.getProxy();
userService.addUser("John");
Salin selepas log masuk

在上面的示例中,首先使用<config></config>元素包裹起来,然后使用<aspect></aspect>元素来声明切面类,并通过ref属性指定切面类的实例。接着,使用<before></before><after></after><around></around>分别定义了前置通知、后置通知和环绕通知,并通过pointcut属性指定切点表达式。

二、编程式AOP使用方式

除了声明式的方式,Spring AOP还提供了编程式的方式来实现切面和通知的定义。编程式AOP主要是通过ProxyFactory类来创建代理对象,并通过编码方式来定义切面和通知。下面是一个简单的示例:

rrreee

在上面的示例中,首先创建一个ProxyFactory对象,并通过setTarget方法设置目标对象。然后,分别创建BeforeAdviceAfterReturningAdvice对象,并在其中定义了前置通知和后置通知的逻辑。接着,使用addAdvice方法将切面逻辑添加到ProxyFactory对象的通知链中。最后,通过getProxyDalam contoh di atas, mula-mula gunakan anotasi @Aspect untuk menentukan kelas aspek LoggingAspect, dan kemudian Gunakan anotasi @Sebelum, @After dan @Around untuk mentakrifkan pemberitahuan pra, pasca pemberitahuan dan pemberitahuan sekeliling. Dengan mengkonfigurasi atribut execution dalam anotasi @Before, anda boleh menentukan ungkapan pointcut untuk menentukan kaedah yang akan dipintas oleh pemberitahuan. Begitu juga, ungkapan pointcut boleh digunakan dalam anotasi @After dan @Around.

    Kaedah konfigurasi XML
    Selain anotasi, Spring AOP juga boleh melaksanakan definisi aspek dan pemberitahuan melalui konfigurasi XML. Apabila menggunakan kaedah konfigurasi XML, anda perlu menambah elemen <config></config> dalam fail konfigurasi Spring dan mengisytiharkan aspek dan pemberitahuan di dalamnya. Berikut ialah contoh konfigurasi XML:

rrreeeDalam contoh di atas, bungkus dahulu dengan elemen <config></config> dan kemudian gunakan &lt ;aop:aspect> elemen untuk mengisytiharkan kelas aspek dan menentukan contoh kelas aspek melalui atribut ref. Seterusnya, gunakan <before></before>, <after></after> dan <around></around> untuk mentakrifkan pra-pemberitahuan masing-masing , nasihat pasca dan nasihat sekeliling, dan nyatakan ungkapan potong titik melalui atribut pointcut. 🎜🎜2. Cara menggunakan AOP terprogram🎜🎜Selain pendekatan deklaratif, Spring AOP juga menyediakan pendekatan terprogram untuk melaksanakan definisi aspek dan pemberitahuan. AOP terprogram terutamanya mencipta objek proksi melalui kelas ProxyFactory dan mentakrifkan aspek dan pemberitahuan melalui pengekodan. Berikut ialah contoh mudah: 🎜rrreee🎜Dalam contoh di atas, mula-mula buat objek ProxyFactory dan tetapkan objek sasaran melalui kaedah setTarget. Kemudian, cipta objek BeforeAdvice dan AfterReturningAdvice dan tentukan logik pra-pemberitahuan dan pasca-pemberitahuan di dalamnya. Seterusnya, gunakan kaedah addAdvice untuk menambah logik aspek pada rantai nasihat objek ProxyFactory. Akhir sekali, dapatkan objek proksi melalui kaedah getProxy dan panggil kaedah objek proksi. 🎜🎜Ringkasan: 🎜Artikel ini memperincikan kaedah aplikasi biasa AOP pada Musim Bunga, termasuk kaedah deklaratif dan pengaturcaraan, dan menyediakan contoh kod khusus. Melalui anotasi AspectJ deklaratif dan konfigurasi XML, dan ProxyFactory terprogram, pembangun boleh menggunakan teknologi AOP dengan mudah dalam Spring dan melaksanakan definisi aspek dan pemberitahuan. Dalam projek sebenar, memilih kaedah yang sesuai mengikut keperluan dan senario tertentu boleh meningkatkan kebolehgunaan semula dan kebolehselenggaraan kod serta mencapai hasil pembangunan yang lebih baik. 🎜

Atas ialah kandungan terperinci Analisis kaedah aplikasi AOP biasa 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

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

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.

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;

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

Aplikasi IoC dan AOP dalam bahasa Java Aplikasi IoC dan AOP dalam bahasa Java Jun 10, 2023 pm 12:10 PM

Dalam bahasa Java, IoC (Inversion of Control) dan AOP (Aspect Oriented Programming) adalah dua idea dan teknologi pengaturcaraan yang sangat penting. Aplikasi mereka boleh meningkatkan kebolehselenggaraan, kebolehskalaan dan kebolehgunaan semula kod, dengan itu membantu pembangun membangun dan menyelenggara sistem perisian dengan lebih cekap. IoC ialah corak reka bentuk berorientasikan objek, juga dikenali sebagai "Suntikan Ketergantungan"

Perbezaan dan hubungan antara Spring Boot dan Spring Cloud Perbezaan dan hubungan antara Spring Boot dan Spring Cloud Jun 22, 2023 pm 06:25 PM

SpringBoot dan SpringCloud ialah kedua-dua sambungan Rangka Kerja Spring yang membantu pembangun membina dan menggunakan aplikasi perkhidmatan mikro dengan lebih pantas, tetapi kedua-duanya mempunyai tujuan dan fungsi yang berbeza. SpringBoot ialah rangka kerja untuk membina aplikasi Java dengan pantas, membolehkan pembangun mencipta dan menggunakan aplikasi berasaskan Spring dengan lebih pantas. Ia menyediakan cara yang mudah dan mudah difahami untuk membina aplikasi Spring yang berdiri sendiri dan boleh dilaksanakan

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.

Penggunaan rangka kerja ujian unit JUnit dalam projek Spring Penggunaan rangka kerja ujian unit JUnit dalam projek Spring Apr 18, 2024 pm 04:54 PM

JUnit ialah rangka kerja ujian unit Java yang digunakan secara meluas dalam projek Spring dan boleh digunakan dengan langkah berikut: Tambah kebergantungan JUnit: org.junit.jupiterjunit-jupiter5.8.1test Tulis kes ujian: Gunakan @ExtendWith(SpringExtension.class) untuk mendayakan sambungan, gunakan @Autowired inject beans, gunakan @BeforeEach dan @AfterEach untuk menyediakan dan membersihkan, dan tandakan kaedah ujian dengan @Test.

7 anotasi yang paling biasa digunakan dalam Spring, organisasi paling berkuasa dalam sejarah! 7 anotasi yang paling biasa digunakan dalam Spring, organisasi paling berkuasa dalam sejarah! Jul 26, 2023 pm 04:38 PM

Dengan kemas kini dan lelaran teknologi, Java5.0 mula menyokong anotasi. Sebagai rangka kerja terkemuka di Java, spring perlahan-lahan mula meninggalkan konfigurasi xml sejak ia dikemas kini kepada versi 2.5, dan lebih banyak anotasi digunakan untuk mengawal rangka kerja spring.

See all articles