- 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 |