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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

大数据WEB阶段Spring框架 AOP面向切面编程(一)

發布時間:2024/4/30 javascript 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 大数据WEB阶段Spring框架 AOP面向切面编程(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Spring — AOP面向切面編程(一)

一、代理模式概述

  • 代理的特點:(目標對象即被代理者)
  • 實現和目標對象相同的接口
  • 具備和目標對象的方法
  • 代理者不僅要做目標對象的方法 , 還要做一些額外的操作
  • 使用場景:
  • 事務
  • 權限控制
  • 統計每個方法的執行時間
  • 二、靜態代理


    1. 靜態代理優點
    1. 解耦
    2. 靜態代理缺點:
    1. 一個代理類只能服務于一個被代理 , 如果被代理類很多 , 則操作會非常繁瑣
    2. 代碼復用性不高 , 重復代碼太多
    3. 代理類的通用性幾乎為0
    4. 案例: 把service層的事務管理操作解耦

    事務管理類@Componentpublic class TXManage {public void startTx(){System.out.println("開啟事務");}public void commti(){System.out.println("提交事務");}public void rollback(){System.out.println("回滾事務");}}靜態代理類注意實現與代理目標相同的接口需要指定id , 與注解的機制有關@Component("personService")public class StaticProxy implements PersonService{@Autowiredprivate TXManage tx ;@Autowiredprivate PersonServiceImpl pl;@Overridepublic void savePerson(Person person) {try{tx.startTx();pl.savePerson(person);tx.commti();}catch(Exception e){tx.rollback();}}}

    三、動態代理


    1. 動態代理分為兩種:
    1. JDK提供的動態代理
    2. CGLib動態代理
    2. JDK提供的動態代理
    1. 優點:
    1. 繼承靜態代理的優點 , 一個代理類可以為多個目標類服務
    2. 提高代碼復用性
    2. 缺點:
    1. 并不是所有的方法都需要代理 , 需要進行方法過濾 , 過程繁瑣
    3. 必須要求目標類有接口
    4. 案例: 把service層的事務管理操作解耦

    事務管理類 @Componentpublic class TXManage {public void startTx(){System.out.println("開啟事務");}public void commti(){System.out.println("提交事務");}public void rollback(){System.out.println("回滾事務");}}動態代理生成類@Componentpublic class DynamicProxy {@Autowiredprivate TXManage tx;public Object getProxy(final Object tagert){Object proxy = Proxy.newProxyInstance(tagert.getClass().getClassLoader(), tagert.getClass().getInterfaces(), new InvocationHandler() {@Overridepublic Object invoke(Object proxy, Method method, Object[] args)throws Throwable {tx.startTx();Object result = method.invoke(tagert, args);tx.commti();return result;}});return proxy;}}改造調用service的層 , 使他調用的是代理之后的service@Controllerpublic class PersonServlet {@Autowiredprivate PersonService personService;@Autowiredprivate DynamicProxy dp;public void savePerson(Person person){PersonService ps = (PersonService) dp.getProxy(personService);ps.savePerson(person);}}
  • CGLib動態代理
  • 優點:
  • 繼承JDK動態代理的優點
  • 并不需要目標對象有接口
  • 缺點:
  • 方法過濾繁瑣
  • 四、Spring AOP面向切面編程

  • Spring AOP 繼承了以上代理所有的優點 , 并且可以對方法進行精準過濾
  • Spring AOP 內部實現就是通過兩種動態代理來實現的 , 進行了封裝
  • AOP:
  • 是一種編程思想 , 可以實現把某些具體的功能的代碼放在一個切面(類)當中 , 在不改動原來項目結構的同時 , 把切面插入到工程中 。 使用 這種編程思想 , 可以使項目的耦合程度降到最低
  • Spring AOP 的相關概念:
  • 切面(Aspect):
  • 就是一個類 , 如: 事務的切面類 、 權限控制的切面類 、 日志輸出切面類 。。。
  • 連接點(Joinpoint):
  • 代表目標類中的方法
  • 通知(Advice):
  • 切面中的方法 , 分為五種通知:
  • 前置通知: 目標方法執行之前的通知
  • 后置通知: 目標方法執行之后的通知
  • 最終通知: 目標方法拋出異常之后的通知(相當于 finally塊)
  • 環繞通知: 目標方法執行前后執行的通知
  • 異常通知: 目標方法發生異常執行的通知(相當于catch塊)
  • 切入點(Pointcut): 過濾方法的規則 , 只有滿足切入點的規則才會執行切面中的通知
  • 引入:
  • 目標對象:
  • 真正執行目標方法的類
  • AOP代理對象:
  • 在否和切入點的規則的吧前提下 , 真正執行的對象都是代理對象
  • 織入:
  • 代理對象的方法體 , 用來連接通知和目標對象
  • AOP實現

  • 實現步驟:
  • 導入相關jar包
  • 編寫配置文件的頭(導入Spring aop約束)
  • 編寫目標類
  • 編寫切面和通知
  • 配置切入點表達式
  • 配置切面和通知
  • 導入相關jar包
  • spring-aop.jar
  • spring-aspects.jar
  • aopectjrt.jar
  • aspectjweaver.jar
  • aopalliance.jar
  • 編寫配置文件的頭

    <?xml version="1.0" encoding="UTF-8"?> <beansxmlns="http://www.springframework.org/schema/beans"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:context="http://www.springframework.org/schema/context"xmlns:util="http://www.springframework.org/schema/util"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsdhttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd"> </beans>
  • 編寫目標類

    @Service public class PersonServiceImpl implements PersonService{@Autowiredprivate PersonDao dao;@Overridepublic void savePerson(Person person) {dao.savePerson(person);}}
  • 編寫切面和通知

    @Component public class TxAspect {@Autowiredprivate TXManage tx;public Object around(ProceedingJoinPoint pjp) throws Throwable{tx.startTx();pjp.proceed();tx.commti();return null;} }
  • 配置切面表達式

    <!-- 配置切面 --> <aop:config><!-- 配置切入點 一定要在切面的上面配置--><!-- within表達式只能過濾包和類 --><aop:pointcut expression="within(com.tj.service.*)" id="pc"/> </aop:config>
  • 配置切面和通知

    <!-- 配置切面 --> <aop:config><!-- 配置切入點 一定要在切面的上面配置--><!-- within表達式只能過濾包和類 --><aop:pointcut expression="within(com.tj.service.*)" id="pc"/><!-- 配置切面 --><aop:aspect ref="txAspect" ><!-- 配置切面中的通知 --><aop:around method="around" pointcut-ref="pc"/></aop:aspect> </aop:config>
  • 總結

    以上是生活随笔為你收集整理的大数据WEB阶段Spring框架 AOP面向切面编程(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 色偷偷中文字幕 | 国产一区二区在线免费观看 | 国产精品xxxxxx | 香蕉视频污在线观看 | 欧美 亚洲 一区 | 韩国美女被c | 香蕉一区二区 | 一道本av| 日韩一区二区三区免费在线观看 | 色播综合网 | 国产视频网 | 日本美女黄视频 | 手机在线免费视频 | 国产大片一区二区 | gogo人体做爰大胆视频 | 国产精品日韩无码 | 毛茸茸亚洲孕妇孕交片 | 亚洲欧美日韩一区二区 | 欧美极品视频在线观看 | 国产精品无码无卡无需播放器 | 射进来av影视网 | 欧美日本一区二区三区 | 久久婷婷视频 | 美女扒开尿口给男人捅 | www.av88| av不卡影院| 国产精品久久久久影院老司 | 午夜视频观看 | 欧美激情一区二区三区免费观看 | 亚洲调教| 好男人影视www | 美女国产精品 | 亚洲欧美激情在线观看 | 秘密基地在线观看完整版免费 | 亚洲一级免费毛片 | 欧美亚洲国产精品 | 超碰免费成人 | 麻豆美女视频 | babes性欧美69 | 国产精品欧美综合亚洲 | 亚洲AV综合色区国产精品天天 | 日本三级在线 | 日本美女久久久 | 久久国产91 | 亚洲黄片一区二区三区 | 亚洲激情视频在线观看 | 国产在线视频一区 | 香蕉在线看| 日本乱轮视频 | 欧美一区二区三区四区在线观看 | 欧美成人精品一区二区三区在线观看 | 精品小视频 | 日韩欧美网 | 国产传媒国产传媒 | 亚洲玖玖爱 | 精品一区中文字幕 | 久操视频在线免费观看 | 凹凸精品熟女在线观看 | 和黑帮大佬的365 | 久草网视频 | 欧美在线| 成人性生交大片免费看 | 精品一区二区三区免费毛片 | 超碰520| 欧美性猛交ⅹ乱大交3 | 日韩黄色精品视频 | 黄色视屏在线播放 | 久久久久久穴 | 日本三级中文字幕 | 波多野结衣啪啪 | 国产精品视频久久久久久久 | 国产成人二区 | 国产精品精品国产 | 秋霞欧洲 | 中国字幕一色哟哟 | 免费久久一级欧美特大黄 | 国产视频久久久久久 | 肉丝袜脚交视频一区二区 | 午夜精品成人毛片非洲 | 中文字幕亚洲不卡 | 人人草超碰| 福利片一区二区 | 91羞羞网站| 越南黄色一级片 | 国内精品嫩模av私拍在线观看 | 日韩欧美爱爱 | 久久这里只有精品6 | 国产成人久久精品麻豆二区 | 天堂素人| 香蕉视频网站 | 中文字幕欧美人妻精品一区蜜臀 | 亚洲欧美国产一区二区三区 | 国产免费成人在线视频 | 中日黄色片 | 黄色国产在线观看 | 红桃视频在线播放 | 免费毛片观看 | 陪读偷伦初尝小说 | 欧美日韩一区二区在线 |