JAVA

AOP

k9e4h 2016. 3. 18. 20:29
  • Aspect: A modularization of a concern that cuts across multiple objects. Each aspect focuses on a specific crosscutting functionality
  • Join point: A point during the execution of a script, such as the execution of a method or property access
  • Advice: Action taken by an aspect at a particular join point
  • Pointcut: A regular expression that matches join points. An advice is associated with a pointcut expression and runs at any join point that matches the pointcut

@Pointcut : aspectJ를 적용할 타겟을 정의해준다. 전체 컨트롤러의 함수대상, 특정 어노테이션을 설정한 함수대상,

                특정 메소드 대상 등 개발자가 적용하길 원하는 범위를 정의하는 어노테이션

@Before : aspectJ를 적용할 타겟 메소드가 실행되기 '전' 수행됨

@AfterReturning : aspectJ를 적용할 타겟 메소드가 실행된 '후' 수행됨 (제일 마지막에 수행됨)

@Around : aspectJ를 적용할 타겟 메소드 실행 전 , 후 처리를 모두 할 수 있음

 

 

https://www.baeldung.com/aspectj

https://jeffrey-oh.tistory.com/332


 

 

 

 AOP

- target : advice 적용될 객체 (모듈)//core concern // 우리가 하던것

- advice : aspect 해야할 작업내용, 순수한 부가기능 자체 // cross cutting concern

=> core concern + cross cutting concern = (Dynamic) proxy

-weaving : advice, pointcut 조합하여 tartget 적용하는 과정 // wiring

-  joinpoint :  부가기능을 삽입하는 위치, advice 붙는곳, spring joinpoint tartget method이다.

      Spring AOP joinPoint method 제공한다 field get/set 메소드 통해, constructor singleton

     어디에 advice 적용할지에 대한 지점(메서드 호출, 필드값 변경 ), code advice 연결해주는 설정 정보

- pointcut : 부가기능이 삽입될 대상 지점, 특정 method에만 advice 붙이고 싶을때, advice 붙는 rule

      joinpoint 부분집합. 실제로 advice 적용되는 joinpint/ 조건을 통해 선택된 joinpoint 일부

- aspect(관점, advisor) : 특정 부가 기능이 어디에 삽입 되어야 할지 지정/ advice+pintcut

- proxy : advice target 적용했을때 생성되는 객체 ( target+advice), 실제 구현자가 원했던 공통모듈과 모듈의 원래 기능을 모두 수행할 있는 객체

실제 서비스를 담당하는 서비스 모듈(특정 서버, 특정 클래스 또는 메소드)을 대신하여 자신이 서비스하는 것 처럼 보이도록 하는 개념

 

-------------------------------------------------------------------------------------------------------------

 

<<더 알아 볼 것>>

 

 

AOP OOP

Target object??

Advice??

우리가 proxy 만든 것이아니라 자동으로 -> Dynamic proxy

Weaving dynamic proxy 돈다

04 project target object

Advice.java에서 getMessage 호출하기전에 advice 붙었다

 

 

 

 

--------------------------------------------------

 

Ioc : inversion of control

명령어 순서에 상관없이 사건에 따라 호출됨

ex javascript의 eventListener 

위치에 상관없이 클릭하면 호출당하는거지 내가호출하는 것이아니라

 

 

DI : Dependency Injection

사회에 나가면 나라에서 너 집필요하지? 집가져 이런느 것ㅋㅋㅋㅋ

이게아니라 집필요하면 내가사야지..

내가 지금 교육수당 받는 것도 DI 이지 않을까ㅋㅋㅋㅋㅋ

IoC의 한사례가 DI 

 

IoC container

Spring의 DI를 관리하는 것

 

 

-----------------------------------------------------------------------

http://vandbt.tistory.com/44

http://www.zdnet.co.kr/news/news_view.asp?artice_id=00000039147106

반응형

'JAVA' 카테고리의 다른 글

Java Thread (Last Updated : 2021.07.27)  (0) 2016.03.23
[java01] Server/Network 기초  (0) 2016.03.23
[#4] Association(HasA) & Dependency 관계  (0) 2016.03.22
[#2]용어정리2  (0) 2016.03.18
OOP 관련 개념  (0) 2016.03.16