** OOP vs. AOP
- OOP와 AOP는 대립되는 관계 아니다. OOP를 좀 더 OOP 답게 만들기 위해 AOP 개념 생겼다.
- 우찌됐든 둘 다 중복되는 코드를 줄여보자 하는 내용
** AOP (Aspect Oriented Program)
- 관점지향프로그램
- 설계할 때 business logic만 예쁘게 뽑아 놨는데.. (아래 그림)
- 코딩하다 보니까 자꾸 비슷한 코드들이 따라 붙더라... - 그래서 그런 놈들을 별도의 클레스로 뽑아내고 보니, - 코드가 더 더럽더라.. - 그런데다 커플링도 밀접하게 달라 붙더라 (유지보수 떨어져!!!)
** join Point - 종단관점에 횡단관점을 적용시킬 후보군 -> 뭔소리? business logic중 따라붙는 코드 어디에 끼워 '넣을 수 있는' 건데? 라는 것 - AspectJ : 클레스 생성됐을 때 distroy 시킬 때 등등 많은 join point 제공한다. - SpringAOP : method단위 join point만 제공한다 method 호출시점 method return 시점 method에서 Exceptino throw됐을 때 method가 invocation 됐을 때 - 위 join point가 너무 적지 않냐라는 질문에 spring 진영은 저거 말고 자주쓰는거 뭔데? 라고 반문 ** pointcut - 많은 join point 중에 '어디에' 찍을껀데? 하는 것 ** Advice - pointcut에 적용할 횡단관점이 '무엇' 적용할 껀지 ** Advisor & Aspect - point cut + advice를 결합한 것 말한다. - 결국 Aspect 적용한다는 것은 business logic '어디'에 따라붙은 코드 '무엇'을 적용할 지 지정하는 것 ** SpringAOP의 history - 1.0 버전에서는 IOC에 열심히 했다면, 2.0 버전에서는 AOP를 열심히 - 1.0 버전에서는 java 1.3부터 있는 Replect 에 있는 개념 그대로 만들었었다. (아래 그림) - 그래서 용어도 target, intercepter, interface 그대로 썼음
- 근데 2.0에서는 AspectJ에 있는 개념 많이 얻어왔다. - 그래서 용어도 aspect, point cut, advice 등의 용어 사용한다.
'Framework' 카테고리의 다른 글
멀캠교육요약 4일차-Spring,Hibernate,ibatis (0) | 2015.07.19 |
---|---|
멀캠교육요약 3일차(SpringMVC)-Spring,Hibernate,ibatis (0) | 2015.07.19 |
멀캠교육요약 3일차-Spring,Hibernate,ibatis (0) | 2015.07.19 |
멀캠교육요약 2일차-Spring,Hibernate,ibatis (0) | 2015.07.17 |
멀캠교육요약 1일차-Spring,Hibernate,ibatis (0) | 2015.07.17 |