AspectJ menjelaskan singgung dan peningkatan melalui anotasi.
1 Persyaratan Lingkungan Pengembangan
Karena Anda ingin menggunakan anotasi, pastikan Anda menggunakan Java 5.0 dan di atasnya.
Perkenalkan Perpustakaan Kelas Terkait AspectJ:
<dependency> <GroupId> org.aspectj </groupid> <ArTifactId> aspekjrt </t ArtifactId> <version> $ {aspectj.version} </version> </dependency> <dependency> <RoupId> org.aspectj </sroupid> <RiTtifacTID> AspectJweAver </Artifactid> <version> $ {aspectj.version} </version> </dependency> <dependency> <groupid> org.aspectj </groupid> <ArtifactId> aspekjtools </artifactid> <version> $ {aspectj.versif} </version> </dependency> <dependency> <version> <sectipj> <suppecpecpect> </Versi </Dependency> <dependency> <groupdid> <secpecpecpecpecpeol> </versi </dependency> <dependency> <grouptid> <Aspecpecpece> </Versi </Dependency> <dependency> <groupdid> <version> $ {aspectj.version} </version> </dependency> <dependency> <groupId> aopalliance </groupid> <ArTifactId> aopalliance </t Artifactid> <version> $ {aopalliance.version} </version> </dependency> 2 Metode Pemrograman
@Aspek // Identifikasi segi
kelas publik prerentaspect {/*** Logika yang ditingkatkan*/@before ("Eksekusi (* sewa (..))") // Tentukan tipe tangen dan peningkatan public void beforerent () {System.out.println ("Mulai eksekusi tindakan sewa"); }}Bagian ini hanyalah pojo biasa, tetapi anotasi @Aspect ditambahkan.
@Before("execution(* rent(..))") berarti bahwa jenis @Before adalah peningkatan yang ditingkatkan sebelumnya, dan isinya adalah ekspresi titik-potong @AspectJ. Di sini itu berarti bahwa peningkatan itu ditenun pada metode sewa () dari kelas target. sewa () dapat berisi parameter yang masuk dan nilai pengembalian apa pun.
Bukankah sangat nyaman bagi kelas dengan @Aspect untuk mengintegrasikan titik tangen, jenis peningkatan dan logika silang yang ditingkatkan melalui anotasi dan kode? O (∩_∩) o haha ~
Tes unit:
AspectJProxyFactory factory = new aspectjproxyfactory (); // Setel target class factory.setarget (pengguna baru ()); // tambahkan facet class factory.addaspect (prerentaspect.class); user proxy = factory.getproxy (); string userid = "001";
Hasil output:
--Melali aksi sewa-
Pengguna: Sewa [Power Bank]
Pengguna: Return [Power Bank]
3 Metode Konfigurasi
<!-Target Class-> <bean id = "user"/> <!-kelas wajah-> <bean/> <!-secara otomatis membuat agen-> <bean/>
Tes unit:
ApplicationContext Context = new ClassPathXMLapPlicationContext (spring.xml "); user user = (user) context.getBean (" user "); string userid =" 001 "; user.rent (userId); user.back (userId);Outputnya persis sama dengan program.
Ini juga dapat dikonfigurasi berdasarkan namespace AOP skema:
<? XML Versi = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmls xmlns: aop = "http://www.springframework.org/schema/aop" xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd "> <!-aspek drive-> <aop: aspectj-autoproxy/> <!-class-> <aop =" class> <"class!" Class!> <"class!" <bean/> </tac>
Konfigurasi ini lebih sederhana. Faktanya, mode proxy otomatis telah diadopsi dalam <aop:aspectj-atuoproxy/> o (∩_∩) o haha ~
Atribut proxy-target-class dari <aop:aspectj-atuoproxy/> adalah false secara default, menunjukkan bahwa peningkatan itu ditenun menggunakan teknologi proxy dinamis JDK; Jika nilai ini benar, ini menunjukkan bahwa peningkatan itu ditenun menggunakan teknologi proxy dinamis CGLIB. Jika kelas target tidak mendeklarasikan antarmuka, bahkan jika proxy-target-class diatur ke false, yo yang disempurnakan (∩_∩) o haha ~
Untuk proyek berdasarkan Java 5.0+, disarankan untuk menggunakan AspectJ untuk mengonfigurasi pemotongan titik dan peningkatan, karena ini lebih sederhana dan lebih langsung.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.