當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Spring-Aop-注解实现
生活随笔
收集整理的這篇文章主要介紹了
Spring-Aop-注解实现
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Spring-Aop-注解實現(xiàn)
- Spring-aop-理論知識
- Spring-Aop-注解實現(xiàn) 項目結(jié)構(gòu)圖
- 具體步驟:
- 1、創(chuàng)建maven 項目 導(dǎo)入依賴 創(chuàng)建好項目結(jié)構(gòu)
- 2、寫一個接口 及 其實現(xiàn)類
- 3、切面類
- 4、application.xml 文件
- 測試
- 自言自語
Spring-aop-理論知識
Spring-Aop-注解實現(xiàn) 項目結(jié)構(gòu)圖
具體步驟:
1、創(chuàng)建maven 項目 導(dǎo)入依賴 創(chuàng)建好項目結(jié)構(gòu)
<dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.18</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.3.4</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>5.3.4</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>5.3.4</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-expression</artifactId><version>5.3.4</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>5.3.4</version></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.9.6</version></dependency></dependencies>2、寫一個接口 及 其實現(xiàn)類
/*** @version 1.0* @author: crush* @date: 2021-03-05 10:26*/ public interface TestDao {public void delete(); } /*** @version 1.0* @author: crush* @date: 2021-03-05 10:27*/ @Service public class TestDaoImpl implements TestDao {public void delete() {System.out.println("正在執(zhí)行的方法-->刪除");} }3、切面類
/*** @version 1.0* @author: crush* @date: 2021-03-10 18:04*/ @Aspect @Component public class MyAspectAnnotation {@Pointcut("execution(* com.dao.*.*(..))")private void myPointCut(){}/*** 前置通知 使用JoinPoint 接口作為參數(shù)獲得目標對象的信息* @Before("myPointCut()") ==* <aop:after method="after" pointcut-ref="myPointCut"/>**/@Before("myPointCut()")public void before(JoinPoint jp){System.out.print("前置通知:模擬權(quán)限控制");System.out.println("目標對象:"+jp.getTarget()+",被增強的方法:"+jp.getSignature().getName());}@AfterReturning("myPointCut()")public void afterReturning(JoinPoint jp){System.out.print("后置返回通知:"+"模擬刪除臨時文件");System.out.println(",被增強的方法"+jp.getSignature().getName());}@Around("myPointCut()")public Object around(ProceedingJoinPoint pjp) throws Throwable {System.out.println("環(huán)繞開始:執(zhí)行目標方法前,模擬開啟事務(wù)");Object obj = pjp.proceed();System.out.println("環(huán)繞結(jié)束:執(zhí)行目標方法后,模擬關(guān)閉事務(wù)");return obj;}@AfterThrowing(value = "myPointCut()",throwing = "throwable")public void except(Throwable throwable){System.out.println("異常通知:"+"程序執(zhí)行異常"+throwable.getMessage());}@After("myPointCut()")public void after(){System.out.println("最終通知:釋放資源");}}4、application.xml 文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop https://www.springframework.org/schema/aop/spring-aop.xsd"><context:component-scan base-package="com.dao"/><context:component-scan base-package="com.aspect"/><!--啟動基于注解的AspectJ支持--><aop:aspectj-autoproxy proxy-target-class="true"/> </beans>測試
@Testpublic void Test(){ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");TestDao testDao = applicationContext.getBean("testDaoImpl", TestDaoImpl.class);testDao.delete();/*** 輸出:* 環(huán)繞開始:執(zhí)行目標方法前,模擬開啟事務(wù)* 前置通知:模擬權(quán)限控制目標對象:com.dao.TestDaoImpl@2bef51f2,被增強的方法:delete* 正在執(zhí)行的方法-->刪除* 后置返回通知:模擬刪除臨時文件,被增強的方法delete* 最終通知:釋放資源* 環(huán)繞結(jié)束:執(zhí)行目標方法后,模擬關(guān)閉事務(wù)*/}自言自語
完成一小段任務(wù)拉。輕松一會。
干別的活去。
總結(jié)
以上是生活随笔為你收集整理的Spring-Aop-注解实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring-Aop-XML实现
- 下一篇: 阿里云服务器中毒‘Kirito666’经