多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當前位置:首頁 > php框架 > 框架設(shè)計 > Spring(十二)AspectJ框架開發(fā)AOP(基于注解)

Spring(十二)AspectJ框架開發(fā)AOP(基于注解)

來源:程序員人生   發(fā)布時間:2017-03-24 09:03:27 閱讀次數(shù):11571次

在上篇文章中( Spring(101)AspectJ框架開發(fā)AOP(基于xml))是使用xml對AspectJ的使用,@AspectJ 是AspectJ1.5新增功能,通過JDK5注解技術(shù),允許直接在Bean類中定義切面,所以可使用xml方式和注解方式來開發(fā)AOP 所以在這篇文章中我們使用注解來代替xml。
我們可使用注解1點1點替換xml的配置。
說明:

@Aspect 聲明切面,修飾切面類,從而取得 通知。
通知
@Before 前置
@AfterReturning 后置
@Around 環(huán)繞
@AfterThrowing 拋出異常
@After 終究
切入點
@PointCut ,修飾方法 private void xxx(){} 以后通過“方法名”取得切入點援用

替換bean

在xml中

<!-- 創(chuàng)建目標類 -->
    <bean id="userServiceId" class="com.scx.xmlproxy.test.UserServiceImpl"></bean> 
    <!-- 創(chuàng)建切面類(通知) -->  
    <bean id="myAspectId" class="com.scx.xmlproxy.test.MyAspect"></bean>  

我們知道xml中的bean可使用注解@component來替換
在web開發(fā)中@component衍生了3個注解,我們也能夠為不同的層次使用不同的注解。

web開發(fā),提供3個@Component注解衍生注解(功能1樣)
@Repository :dao層
@Service:service層
@Controller:web層
這3個注解和@Component1樣,在web開發(fā)中使用這3個注解使代碼更加清晰明了。
替換結(jié)果以下:
對目標類,即service層
這里寫圖片描述
對切面類
這里寫圖片描述

替換AOP

<aop:aspect ref="myAspectId">

這里寫圖片描述

替換公共切入點

xml配置:

    <aop:pointcut expression="execution(*com.scx.xmlproxy.test.*.*(..))" id="myPointCut"/>

注解替換:
需要在1個私有的方法上面添加注解@Pointcut。援用時就使用方法名稱pointCut。
這里寫圖片描述

替換前置通知

xml配置:

<aop:before method="before" pointcut-ref="myPointCut"/>

注解替換:
在方法名上面添加@before注解

//前置通知
    @Before(value = "pointCut()")
    public void before(JoinPoint joinPoint){
        System.out.println("MyAspect-before");
    }

替換終究通知

xml代碼

<aop:after method="after" pointcut-ref="myPointCut"/>

注解替換

    //終究通知
    @After(value="pointCut()")
    public void after(JoinPoint joinPoint){
        System.out.println("MyAspect-after");
    }

替換后置通知

xml配置:

<aop:after-returning method="afterReturning" pointcut-ref="myPointCut" returning="ret" />

注解替換:

//后置通知
    @AfterReturning(value="pointCut()",returning="ret")
    public void afterReturning(JoinPoint joinPoint,Object ret){
        System.out.println("MyAspect-afterReturning  "+joinPoint.getSignature().getName()+"\t"+ret);
    }

替換環(huán)繞通知

xml配置:

 <aop:around method="around" pointcut-ref="myPointCut"/>    

注解替換:

//環(huán)繞通知
    @Around(value = "pointCut()")
    public Object around(ProceedingJoinPoint joinPoint) throws Throwable{
        System.out.println("MyAspect-around-前");
        Object obj=joinPoint.proceed();//履行目標方法
        System.out.println("MyAspect-around-后");
        return obj;
    }

替換異常通知

xml配置:

<aop:after-throwing method="afterThrowing" pointcut-ref="myPointCut" throwing="e"/>

注解替換:

//異常通知
    @AfterThrowing(value="pointCut()")
    public void afterThrowing(JoinPoint joinPoint,Throwable e){
        System.out.println("MyAspect-afterThrowing "+e.getMessage());
    }

測試代碼和上篇1樣 運行結(jié)果也是1樣。

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 午夜免费福利 | 美国jizz| 欧美精品福利 | 羞羞午夜| 日本香蕉一区二区在线观看 | 欧美日韩一区二区亚洲 | 久久久久久一品道精品免费看 | 一二三四视频社区在线中文 | 97碰碰碰免费公开在线视频 | 在线观看视频免费播放 | 久久99国产精一区二区三区! | 欧美国产综合日韩一区二区 | 精品久久久久久中文字幕女 | 国产精品久久九九 | 日本在线视频网 | 亚洲swag精品自拍一区 | 国产一区在线视频 | 欧美日本一道免费一区三区 | 亚洲视频高清 | 国产男女爽爽爽爽爽免费视频 | 日本高清无吗免费播放 | 国产精品免费视频一区一 | 欧美另类杂交a | 九色国产在线 | 日本aaaa片毛片免费观看 | 91久久偷偷做嫩草影院 | 特黄的欧美毛片 | 成年视频xxxxx在线网站 | 欧美成人亚洲国产精品 | 亚洲欧洲久久精品 | 国产精品福利在线观看免费不卡 | 日韩中文字幕精品免费一区 | 妇欲欢公爽公妇高h欲 | 国产一区二区三区在线观看视频 | 国产综合久久一区二区三区 | 黄色aa大片| 国产成人一级片 | 国产精品高清一区二区三区 | 2020久久国产最新免费观看 | 五月天在线观看免费视频播放 | 国产v国产v片大片线观看网站 |