2016년 10월 26일 수요일

66day / Framework / spring AOP

http://www.tutorialscorner.com

 Aspect-Oriented Programming 관점 지향 프로그래밍


한마디로 하면 관점지향 프로그래밍이지만 그렇다고 OOP가 아닌 것은 아니다.
아무리 검색하고 이해해보려 해도 굉장히 힘든 부분이였다.
나만의 정의를 하자면 공통관심사를 모아서 캡슐화하여 사용한다.
위의 사진으로 본다면 가로줄이 핵심관심사 세로줄이 공통관심사라고 보면된다

모듈별로 반복되어 사용되는 코드를 AOP를 통하여 한번에 처리할 수 있다.

예를들면
내가 원하는 패키지에 공통적으로
  1. 메서드 시작 전 (Before)
  2. 메서드 종료 후 (After)
  3. 메서드 정상종료 후 (AfterReturning)
  4. 메서드에서 예외 발생 (AfterThrowing)
  5. 메소드에 모든 부분 (Around)

5가지 이벤트 (적용시점)에 원하는 로직을 주입할 수 있다.
또한 이를 사용하기 위하여 AOP에 Proxy를 이해해야만 한다.
-> 이해하기 너무 어렵다...

  • Pointcut : AOP를 적용할 타깃을 선택하는 지시자 (적용대상)
  • JoinPoint : Aspect 적용이 가능한 모든 곳 또는 적용 위치
  • Advice : 타깃객체의 메서드에 적용될 부가기능 동작 코드 (위의 5가지 이벤트)
  • Aspect : 구현하고자 하는 공통관심사의 기능을 의미한다. or (Pointcut + Advice)
  • Weaving : 분리된 부가 기능을 Proxy객체에 다시 삽입한다 (분기처리)

이 밖에도 log4j를 활용하여 log를 찍는 방법도 사용해봤다
  • Log4j란
프로그램을 작성하는 도중에 로그를 남기기 위해 사용되는 자바 기반 로깅 유틸리티이다. 디버그용 도구로 주로 사용
  • Log4j의 장점
  1. log 추적에 이점이 있다
  2. 프로젝트를 진행하는 개발자들끼리 일관성있는 작업이 가능하다
  3. 기존 디버깅 방법으로 사용했던 sysout을 찍어 확인했던 것을 방지할 수 있다
  4. sysout사용으로 인한 성능저하를 줄일 수 있다
  • Log4j Level
FATAL 
굉장히 심각한 에러
ERROR 
문제가 발생한 상태
WARN 
런타임과정에서는 문제가 없지만, 시스템 에러의 원인이 될수 있는 경고메세지
INFO 
일반적인 정보성 메시지
DEBUG 
디버그 용도로 사용하는 메시지
TRACE 
굉장히 광범위하고 상세적인 메시지 (새로 추가되었다고 한다.)


AOP와 Log4j 나에게는 굉장히 어려운 숙제로 남았다.
거의 처음 프로그래밍언어를 배울 때만큼 어려웠다.
사실 지금도 이해가 잘 안 가며 뭔가 머릿속에 정리되지 않은 채로 쌓여있는 것만 같다.

0 개의 댓글:

댓글 쓰기