国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Spring中AOP實(shí)例詳解

2019-11-14 14:54:16
字體:
供稿:網(wǎng)友

SPRing中AOP實(shí)例詳解

 

需要增強(qiáng)的服務(wù)

假如有以下service,他的功能很簡單,打印輸入的參數(shù)并返回參數(shù)。

@Servicepublic class SimpleService {    public String getName(String name) {        System.out.println(get name is:  + name);        return name;    }} 

定義切面和切點(diǎn)

@Component@aspectpublic class LogAspect {    // 定義切點(diǎn)    @Pointcut(within(com.ydoing.service..*))    // @Pointcut(execution(* com.ydoing.service.*.*(..)))    public void pointCut() {    } }

Before增強(qiáng)處理

    // 定義Before增強(qiáng)處理    // 在目標(biāo)方法調(diào)用之前執(zhí)行增強(qiáng)處理    @Before(pointCut())    public void before(JoinPoint jp) {        // 獲取連接點(diǎn)傳入?yún)?shù)        // Object args = jp.getArgs();        System.out.println(Before增強(qiáng)處理--execute before target method call);    } 

測試輸出:

Before增強(qiáng)處理--execute before target method callget name is: Bob

AfterReturning增強(qiáng)

    // 在目標(biāo)方法調(diào)用之后執(zhí)行增強(qiáng)處理    @AfterReturning(pointcut = pointCut(), returning = ret)    public void afterReturning(JoinPoint jp, Object ret) {        System.out.println(AfterReturnin增強(qiáng)處理--execute after target method call, return value is : + ret);    }

測試輸出:

get name is: BobAfterReturnin增強(qiáng)處理--execute after target method call, return value is :Bob

Around增強(qiáng)

    @Around(pointCut())    public void around(ProceedingJoinPoint jp) {        System.out.println(Around增強(qiáng)--around start...);        Object[] args = jp.getArgs();        // 修改目標(biāo)方法傳入的參數(shù)        args[0] = around_add_ + args[0];        try {            System.out.println(修改傳入?yún)?shù)后執(zhí)行輸出:);            jp.proceed(args);        } catch (Throwable e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        System.out.println(Around增強(qiáng)--around end);    }

輸出:

Around增強(qiáng)--around start...修改傳入?yún)?shù)后執(zhí)行輸出:get name is: around_add_BobAround增強(qiáng)--around end

After增強(qiáng)

    // 無論是否發(fā)生異常都會(huì) 處理    @After(pointCut())    public void after() {        System.out.println(After增強(qiáng)--always do no matter what happen);    }

輸出:

get name is: BobAfter增強(qiáng)--always do no matter what happen  

AfterThrowing增強(qiáng)

    @AfterThrowing(pointcut = pointCut(), throwing = ex)    public void afterThrowing(JoinPoint jp, Throwable ex) {        System.out.println(error is:  + ex);    }

這里沒拋異常,就沒有輸出了

測試代碼如下

@Configuration@EnableAspectJAutoProxy@ComponentScan(basePackages = com.ydoing.service,com.ydoing.aspect)public class AppConfig {    public static void main(String[] args) {        @SuppressWarnings(resource)        applicationContext ctx = new AnnotationConfigApplicationContext(AppConfig.class);        SimpleService service = ctx.getBean(SimpleService.class);        service.getName(Bob);    }}

 

 

 

 QQ群290551701 聚集很多互聯(lián)網(wǎng)精英,技術(shù)總監(jiān),架構(gòu)師,項(xiàng)目經(jīng)理!開源技術(shù)研究,歡迎業(yè)內(nèi)人士,大牛及新手有志于從事IT行業(yè)人員進(jìn)入!


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 西林县| 确山县| 都匀市| 巴中市| 饶河县| 天气| 瓦房店市| 武冈市| 太和县| 印江| 泉州市| 枞阳县| 东台市| 黄山市| 怀来县| 平遥县| 大名县| 循化| 卫辉市| 翁源县| 大田县| 区。| 平果县| 东城区| 分宜县| 大兴区| 青神县| 育儿| 阿尔山市| 山东| 乳源| 赣榆县| 登封市| 隆昌县| 遂平县| 景宁| 明星| 吉安市| 津市市| 洛南县| 连云港市|