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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

服务端第三次课程:面向切面编程AOP

發布時間:2025/1/21 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 服务端第三次课程:面向切面编程AOP 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

3:面向切面編程AOP

1:回顧

  • bean的組裝方式

    • 規劃的裝配 component autowired sacn是在configuration底下的
    • Java config 使用configuration
      • 函數調用,方法調用(調用加了bean方法的)
      • bean方法的參數,相當于auto wired
    • XML配置
  • profile 可以幫我們干什么?加載方法上面還是類上面很重要的東西

    • 指定要創建那些bean,系統有很多的bean,不同的環境是不一樣的
      • 開發,生產,測試
  • conditionlal 條件話的創建注解

    • @bean
    • @conditional
  • @qualifier

  • bean 的作用域

    • 默認是singleton ,一個實例
    • prototype get一個bean 的時候,就給你一個
    • session 多次的交互 ,spring維持一個session的bean
    • request

2:編程方法

  • POP,最小的單元是函數
  • OOP,最小的單元是類
  • AOP,
  • FP,函數式編程:多核技術的發展
  • Rx,反應式編程:

3:AOP

1:引導

  • 日志在

  • 認證:鑒別一個人的身份

  • 授權:登錄之后,看有沒有權力

    • 你要登機,你需要出示你的身份證和機票,身份證是為了證明你張三確實是你張三,這就是 authentication;而機票是為了證明你張三確實買了票可以上飛機,這就是 authorization。
  • 把我們系統當中的,通用的邏輯抽取出來,與具體的業務邏輯隔離開,運行

2:繼承和委托

  • 在音樂會之前需要做一些事情
  • 在音樂會之后需要做一些事情
    • 創建一個對象,對象注入到concert,然后調用觀眾的方法,進行前后的事情

3:橫切關注點

  • 關注的事務

    • 日志
    • 安全
    • 事務
    • 緩存
  • advice 通知

    • 關閉手機 + before
    • 切面做什么,以及什么時候做
  • poincut 切點

    • 在哪里做
    • perform方法
    • 切點表達式 execution(* concert.performance.perform(…))
    • 兩個點表示參數,不關心參數是一個還是兩個,還是多個
  • 切面

    • 這個類同統稱為 一個切面(aspect)

    • 定義方式

      • 注解的方法

        • do not repeat yourself

        • 代碼和注釋不要重復

          • 難以維護
          package concert;import org.aspectj.lang.annotation.*;@Aspect public class Audience1 {@Pointcut("execution(* concert.Performance.perform( .. ))")public void performance() {}@Before("performance()")public void silenceCellPhones() {System.out.println("Silencing cell phones");}
      • XML的方式

  • 連接點

  • 引入

    • 引入新功能
    • introduction
  • 織入

    • 織入時機
    • 編譯器,用特殊的語法來寫切面,和正常的代碼編譯在一起
    • 類加載期,加載的時候,
    • 運行期,spring只支持代理

4:通知的類型

  • before
    • 同一個類的aspect,定義了兩個相同的advice,定義兩個before
    • 那么這兩個的執行順序是無法確定的,哪怕你規定了order數值,也不行
  • after
  • afterreturning
  • afterthrowing
  • around
@EnableAspectJAutoProxy //開啟AspectJ的自動代理機制
  • 我拿到的時候一個proxy的引用,在適當的實際調用

5:切點指示器

  • with 是包路徑的限定,只在這些包地下
&& within(soundsystem.*) && args(trackNumber)"
  • bean 針對某一個具體的bean,來實施制圖

4:問題

  • 我如果要織入多個,這個實例到底是一個多實例,還是一個多實例
  • defaultEncoreable這個類我沒有實例化,當我現在實現多個接口的對象,如果有三個,那么有三個都會增加新的行
    • 這個defaultEncoreable 是單實例還是???

3:XML

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsdhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><aop:aspectj-autoproxy/><bean id="audience" class="concert2.Audience"/><bean id="concert" class="concert.Concert"/><aop:config><aop:aspect ref="audience"><aop:before method="silenceCellPhones"pointcut="execution(* concert.Performance.perform(..))"/><aop:before method="takeSeats"pointcut="execution(* concert.Performance.perform(..))"/><aop:after method="applause"pointcut="execution(* concert.Performance.perform(..))"/><aop:after-throwing method="demandRefund"pointcut="execution(* concert.Performance.perform(..))"/></aop:aspect></aop:config> </beans> 注入的時候,沒有這個屬性 委托這個屬性 我們可以自己實例化,然后給引用<!-- delegate-ref="encoreableDelegate"/>-->

總結

以上是生活随笔為你收集整理的服务端第三次课程:面向切面编程AOP的全部內容,希望文章能夠幫你解決所遇到的問題。

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