日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring之AOP实现

發(fā)布時間:2024/7/5 javascript 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring之AOP实现 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 前言
  • 環(huán)境搭建
  • 前置業(yè)務(wù)類編寫
  • 一、注解實現(xiàn)AOP
    • 1.編寫注解實現(xiàn)的增強類
    • 2.在Spring配置文件中,注冊bean,并增加支持注解的配置
    • 3.測試
  • 二、配置文件實現(xiàn)AOP
    • 1.編寫自定義增強類
    • 2.Spring配置文件中,注冊bean,配置增強
    • 2.測試
  • 總結(jié)


前言

AOP(Aspect Oriented Programming)稱為面向切面編程,在程序開發(fā)中主要用來解決一些系統(tǒng)層面上的問題,比如日志,事務(wù),權(quán)限等待。


環(huán)境搭建

1、pom.xml 配置AOP依賴

<!-- AOP 依賴--><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.9.4</version></dependency>

2、Spring配置文件的命名空間中加入aop頭文件

<beans xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/aop https://www.springframework.org/schema/aop/spring-aop.xsd">

前置業(yè)務(wù)類編寫

1、Admin的service

package com.ex.service;public interface IAdminService {public void saveAdmin(String name); } package com.ex.service.impl;@Service public class adminServiceImpl implements IAdminService {@Overridepublic void saveAdmin(String name) {System.out.println("save admin method");} }

2、user的service

package com.ex.service;public interface IUserService {public void selectUser(int id); } package com.ex.service.impl;@Service public class userServiceImpl implements IUserService {@Overridepublic void selectUser(int id) {System.out.println("user select method");} }

一、注解實現(xiàn)AOP

1.編寫注解實現(xiàn)的增強類

@Component @Aspect public class LogAdvice {// springaop自動的5種aop這里全部列出// *返回類型,包名,*類名,*方法名,(..)任何參數(shù)@Before("execution(* com.ex.service.impl.*.*(..))")public void before(){System.out.println("---------方法執(zhí)行前before()---------");}@After("execution(* com.ex.service.impl.*.*(..))")public void after(){System.out.println("---------方法執(zhí)行后after()---------");}@AfterReturning("execution(* com.ex.service.impl.*.*(..))")public void afterReturning(){System.out.println("---------方法返回后afterReturning()---------");}@Around("execution(* com.ex.service.impl.*.*(..))")public void around(ProceedingJoinPoint jp) throws Throwable {System.out.println("-------環(huán)繞前-------");System.out.println("簽名(拿到方法名):"+jp.getSignature());//執(zhí)行目標(biāo)方法proceedObject proceed = jp.proceed();System.out.println("-------環(huán)繞后------");System.out.println(proceed);}@AfterThrowing("execution(* com.xinzhi.service.impl.*.*(..))")public void afterThrow() {System.out.println("--------------有異常發(fā)生-----------------" + new Date());} }

2.在Spring配置文件中,注冊bean,并增加支持注解的配置

<!-- 掃包:如果使用了注解,需要在開始之前去掃包--><context:component-scan base-package="com.ex"/><!-- aop 注解實現(xiàn) 配置 --><aop:aspectj-autoproxy/>

3.測試

@Testpublic void testAop(){userService.selectUser(1);System.out.println("--------------------------------");adminService.saveAdmin("aa");}

結(jié)果

-------環(huán)繞前------- 簽名(拿到方法名):void com.ex.service.IUserService.selectUser(int) ---------方法執(zhí)行前before()--------- user select method -------環(huán)繞后------ null ---------方法執(zhí)行后after()--------- ---------方法返回后afterReturning()--------- -------------------------------- -------環(huán)繞前------- 簽名(拿到方法名):void com.ex.service.IAdminService.saveAdmin(String) ---------方法執(zhí)行前before()--------- save admin method -------環(huán)繞后------ null ---------方法執(zhí)行后after()--------- ---------方法返回后afterReturning()---------

二、配置文件實現(xiàn)AOP

1.編寫自定義增強類

public class MyAOP {public void before(){System.out.println("---------執(zhí)行方法前打印日志--------------自定義");}public void after(){System.out.println("---------執(zhí)行方法后打印日志--------------自定義");} }

2.Spring配置文件中,注冊bean,配置增強

<!--注冊bean--> <bean id="myAop" class="com.xinzhi.aop.MyAop"/><!--aop的配置--><aop:config><!-- ref 自定義切面類 --><aop:aspect ref="myAOP"><!-- 切入點配置 --><aop:pointcut id="pointcut1" expression="execution(* com.ex.service.impl.adminServiceImpl.*(..))"/><aop:pointcut id="pointcut2" expression="execution(* com.ex.service.impl.userServiceImpl.*(..))"/><!-- 織入 --><aop:before pointcut-ref="pointcut1" method="before"/><aop:after pointcut-ref="pointcut2" method="after"/></aop:aspect></aop:config>

2.測試

@Testpublic void testAop2(){userService.selectUser(1);System.out.println("--------------------------------");adminService.saveAdmin("aa");}

結(jié)果

user select method ---------執(zhí)行方法后打印日志--------------自定義 -------------------------------- ---------執(zhí)行方法前打印日志--------------自定義 save admin method

總結(jié)

AOP就是對指定的一批的方法在其執(zhí)行過程中進行一個統(tǒng)一的處理,將大量重復(fù)性的工作抽離了出來,省事!

總結(jié)

以上是生活随笔為你收集整理的Spring之AOP实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91久久国产综合久久91精品网站 | 一本大道视频 | 爱福利视频一区二区 | 69影院少妇在线观看 | 六月丁香综合 | 中文毛片无遮挡高潮免费 | 夜夜撸 | www国产www | 深夜视频在线免费观看 | 国产又色又爽又黄的 | 夜夜爽av福利精品导航 | 青草草在线观看 | 黑人精品无码一区二区三区 | 麻豆精品在线 | 潘金莲三级80分钟 | 成人亚洲一区 | 黄色片免费在线播放 | 国产成人精品亚洲日本在线观看 | 精品动漫一区二区三区 | 玖玖精品 | 91视频在线免费看 | 色老头在线观看 | 久久久久久久久久国产精品 | 天堂网wwww| 亚洲23p| 亚洲成人a v | 久久九九视频 | 你懂的av在线 | 欧美偷拍第一页 | 波多av| 影音先锋伦理片 | 蜜桃av乱码一区二区三区 | 丰满人妻一区二区三区四区53 | 色哟哟免费| 操碰人人 | 天海翼一区二区三区 | 一级在线播放 | 中国吞精videos露脸 | 亚洲三级影院 | 大屁股白浆一区二区 | 欧美精品成人一区二区三区四区 | 国产在线观看无码免费视频 | 亚洲高清在线视频 | 天天曰天天爽 | 美味的客房沙龙服务 | 丰满少妇aaaaaa爰片毛片 | 日韩福利片在线观看 | 男人久久久 | 亚洲热影院 | 欧美视频 | 欧美日韩一区精品 | 亚洲国产精品99久久久久久久久 | 国产全是老熟女太爽了 | ww黄色| 久久精品老司机 | 538精品在线视频 | 色94色欧美sute亚洲线路二 | 七七色影院 | www.伊人.com | 2020国产在线 | jizz国产视频 | 国产在线播放一区 | 在线播放波多野结衣 | 免费看又黄又无码的网站 | 狂野欧美性猛交xxⅹ李丽珍 | www天天操| 日韩一区二区三区在线免费观看 | 91禁蘑菇在线看 | 在线一本 | 天天干b | 免费看片91 | 国产又粗又黄 | 欧美色女人 | 九九免费 | 久久精品高清 | 韩国无码一区二区三区精品 | 视频二区在线观看 | 91精品国产91久久久久久 | 天天射天天拍 | 午夜精品久久久久久久99黑人 | 国产精品77 | 麻豆91视频| 黄色片久久久 | 国产午夜精品无码 | 国产在线免费观看 | 99人妻碰碰碰久久久久禁片 | 中文人妻熟女乱又乱精品 | 亚洲欧美日韩久久 | 69久久精品无码一区二区 | 日日天天干| 粉色午夜视频 | 午夜视频免费在线观看 | 糖心vlog精品一区二区 | 国产传媒视频在线观看 | 激情视频在线播放 | 亚洲黄色录像 | 色哟哟日韩精品 | 亚洲色精品三区二区一区 | 国产日韩视频在线观看 |