スプリングAOPとプロキシモード


1. AOP(Aspect of Programming)


観点に向けたプログラミング
흩어진 AAAA 와 BBBB

class A {
   method a () {
           AAAA -> AAA
           오늘은 74일 미국 독립 기념일이래요.
           BBBB -> BB
   }
 
   method b () {
           AAAA -> AAA
           저는 아침에 운동을 다녀와서 밥먹고 빨래를 했습니다.
           BBBB -> BB
   }
}

class B {
  method c() {
          AAAA -> AAA
          점심은 이거 찍느라 못먹었는데 저녁엔 제육볶음을 먹고 싶네요.
          BBBB -> BB
  }
}
모아 놓은 AAAA 와 BBBB

class A {
   method a () {
           오늘은 74일 미국 독립 기념일이래요.
   }
 
   method b () {
           저는 아침에 운동을 다녀와서 밥먹고 빨래를 했습니다.
   }
}

class B {
  method c() {
          점심은 이거 찍느라 못먹었는데 저녁엔 제육볶음을 먹고 싶네요.
  }
}

class AAAABBBB {
    method aaaabbb(JoinPoint point) {
         AAAA
	  point.execute()
         BBBB
    }
}
https://velog.io/@jsj3282/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%82%BC%EA%B0%81%ED%98%95%EA%B3%BC-%EC%84%A4%EC%A0%95-%EC%A0%95%EB%B3%B42-AOP1

2.AOPの実施方法


多種のAOP実施方法(オプション)
  • コンパイル:A.java---(AOP)-->A.class(AsspectJ)
    コンパイル中にOP
  • を操作する
  • バイトコードアクション:A.java->A.class---(AOP)-->メモリ(AsspectJ)
    クラスローダはクラスファイルの読み込み時にAOP
  • を操作する.
  • エージェントモード(運転時)(スプリングAOP)
  • エージェントモード:既存のコードに触れずに新しい機能を追加

    支払:サービスインタフェース
    Cash:サービス
    CreditCard:エージェント
    https://velog.io/@jsj3282/%EC%8A%A4%ED%94%84%EB%A7%81%EC%9D%B4-%EC%82%AC%EB%9E%91%ED%95%9C-%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B41
    リファレンス
  • インフラストラクチャ:例示的な学習スプリングフレーム入門(ホワイトベースライン)
  • https://refactoring.guru/design-patterns/proxy
  • https://www.eclipse.org/aspectj/