日韩性视频-久久久蜜桃-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)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩影视一区二区三区 | 国产在线麻豆精品观看 | 国产亚洲女人久久久久毛片 | 欧美成人国产精品一区二区 | 国产精品情侣呻吟对白视频 | 亚洲乱码精品久久久久 | 亚洲最新中文字幕 | 国产无码精品一区二区 | 欧美国产第一页 | 欧美日本久久 | 国产精品成人aaaa在线 | 肉丝超薄少妇一区二区三区 | 97在线观看免费视频 | 亚洲第一字幕 | 日本美女一区二区三区 | 野花视频免费在线观看 | 日剧大尺度床戏做爰 | 少妇精品导航 | 久久精品视频久久 | 国产又爽又黄游戏 | 欧美偷拍视频 | 午夜av成人 | 久久久久久久国产精品美女 | www国产| 国产做受高潮漫动 | 秋霞福利| 96久久精品 | 国产精品久久久久久免费观看 | 69色综合 | 日批在线 | cao在线| 精品国产久 | 久久免费精品 | 成人福利在线观看 | 欧美在线视频免费 | 精品国产一二三四区 | 国产午夜在线视频 | 爱爱小视频网站 | 国产精品video| 日韩欧美高清片 | 天天看片中文字幕 | 欧美黑人精品一区二区不卡 | 水蜜桃av在线 | 九九九免费视频 | av片免费在线| 色99视频 | 欧美激情 亚洲 | 无码视频一区二区三区 | 色网站女女| 日韩有码在线播放 | 中出一区 | 天天插天天 | 国产视频在线观看一区二区 | 欧美伦理影院 | 国产熟女一区二区三区四区 | 国产精品久久中文字幕 | 粉嫩av国产一区二区三区 | 97在线观看免费视频 | 神马国产| 久久人人爱 | 久久狠狠婷婷 | 国产精品人人爽 | 成人国产一区二区三区 | 男女视频免费网站 | 爱久久视频 | 午夜亚洲一区 | 欧美骚少妇 | 精品国产免费一区二区三区 | 偷偷操av | 国产成人av一区二区三区在线观看 | 亚洲精品国产精品乱码桃花 | 欧美极品videos精品 | 久久久久久91香蕉国产 | 国产一级淫片a视频免费观看 | 黄色一节片 | 亚洲少妇中文字幕 | 亚洲色图另类小说 | 久久久久国产精品 | 欧美精品成人久久 | 最近中文字幕在线中文高清版 | 中文字幕11页中文字幕11页 | 精品日韩一区二区 | 欧美 亚洲 激情 一区 | 欧美日韩视频免费 | 麻豆国产一区二区三区四区 | 国产自产在线视频 | 日本免费在线播放 | 天堂在线一区 | 国内精品嫩模av私拍在线观看 | 污动漫网站| 淫语对白 | 日本中文在线视频 | 男人操女人下面 | 青草视频网 | 无码少妇一区二区 | 久久综合九色综合欧美狠狠 | 亚洲一区二区三区高清视频 | 中日韩免费视频 | 秋霞一区二区三区 |