日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

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

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

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

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

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

替換bean

在xml中

<!-- 創(chuàng)建目標(biāo)類 -->
    <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個(gè)注解,我們也能夠?yàn)椴煌膶哟问褂貌煌淖⒔狻?/p>

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

替換AOP

<aop:aspect ref="myAspectId">

這里寫圖片描述

替換公共切入點(diǎn)

xml配置:

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

注解替換:
需要在1個(gè)私有的方法上面添加注解@Pointcut。援用時(shí)就使用方法名稱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();//履行目標(biāo)方法
        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樣 運(yùn)行結(jié)果也是1樣。

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 亚洲乱码一区二区三区三上悠亚 | 黄色大片免费看 | 精品国产不卡一区二区三区 | 国产中文视频 | 欧美视频二区 | 亚洲视频观看 | 久久久91精品国产一区老牛影视 | 国产999精品久久久 日韩av成人在线 | 亚洲欧美日韩在线 | 久久五月天婷婷 | 精品国产不卡一区二区三区 | 91精品国产色综合久久不卡98口 | 澳门永久av免费网站 | se69色成人网wwwsex | 精品福利视频一区二区三区 | 成人欧美一区二区三区视频xxx | 欧美劲爆第一页 | 91av视频免费在线观看 | 精品国产青草久久久久福利 | 一区在线不卡 | 91视频你懂的 | 亚洲一区二区在线视频 | 日韩欧美一区二区三区 | 九九久久精品一区二区三区 | 91福利视频网站 | 精品久久中文字幕 | 国产欧美精品一区二区三区四区 | 久久不射网 | 久草新免费 | 性爱免费视频 | 91精品国产91久久综合 | 国产午夜精品一区二区 | 日韩视频精品在线 | 中文在线中文a | sese国产| 久久久性| 国产亚洲精品精品国产亚洲综合 | 国产在线观 | 欧美性猛交xxxx黑人交 | 欧美日日| 让男人欲仙欲死的床技 |