항해99/TIL

32일차-7/08 목 -항해99

고로케 2021. 7. 9.
반응형

하루 회고

  • 과제를 제출하고나서 모르는 부분을 다시 공부하는데 확실히 흐름을 알고 보니 이해가 잘 되는 것 같다. 지금은 데이터 흐름을 파악하는데 집중하고 중요한 부분들은 그때 그때 갈증날때 채워서 습득을 하는 스탠스로 공부할 계획인다.

주저리 주저리

  • 항상 목요일은 팀원들과 한주의 마무리인사를 하면서 간단한 회고를 한다. 이번주에 팀플레이는 크게 없었지만 과제를 같이 해결하면서 더 빨리 배운것 같아서 나름 알찼다! 여태 계속 좋은 사람들과 팀을 해서 너무 좋다 원희님, 태현님 나중에 꼭 오프라인으로 한번 보고 싶은 사람들!!

오늘 배운 것

  • AOP

AOP는 'Aspect Oriented Programming'의 약어로 기능을 핵심 비지니스 로직과 공통 모듈을 분리함으로써

개발자가 좀 더 비지니스 로직에만 집중해서 처리할 수 있는 방법을 제공한다.

이 말은 즉, 공통 모듈(로깅이나 보안인증 등)을 별도로 작성한 후 코드밖에서 비지니스 로직 사이에 삽입하는 것이

AOP 기능을 사용해 개발한 것이라고 볼 수 있다.

AOP와 비슷한 단어로 Java의 OOP(Object Oriented Programming)이라는 것이 있다.

OOP 즉, 객체지향 프로그래밍이라는 단어와 AOP는 앞만 다르다는 것을 알 수 있다.

AOP는 OOP를 대신하는 새로운 개념이 아니라, OOP를 더욱 OOP답게 사용할 수 있도록 도와주는 개념이다.

객체를 재사용함으로써 개발자들은 반복되는 코드양을 많이 줄일 수 있었지만, 로그나 권한체크, 인증, 예외처리 등

핵심 비지니스 로직은 아니지만 반드시 해야되는 작업은 반복될 수 밖에 없었다.

이러한 문제를 해결해주는 것이 AOP 이다.

쉽게 말해 AOP는 비지니스 로직은 아니지만, 반드시 해야하는 작업 이라고 말할 수 있다.

※ AOP가 사용되는 경우

  • 간단한 메소드 성능 검사 : 개발 도중 작업 시간을 측정해보고 쿼리등을 개선하는 작업은 매우 의미가 있다. 이런 경우 시간을 측정하는 작업을 해당 메소드에 계속 반복해서 측정하는 것은 매우 번거로운 일이므로 AOP기능을 사용한다.
  • 트랜잭션 처리 : AOP의 설정을 응용한 것이다. 매번 사용하는 트랜잭션의 코드는 복잡하고 번거롭다.
  • 예외반환
  • 기타 등등

AOP의 구현방식은 '프록시(Proxy) 패턴' 이라는 방식을 통해서 구현한다.

외부에서 특정한 객체를 호출하면, 객체를 감싸고 있는 바깥쪽 객체(Proxy)를 통해서 호출이 되는 방식이다.

 AOP 관련 용어

  • Aspect : 공통 모듈의 추상적인 명칭. 예를 들어 로깅이나 보안, 트랜잭션과 같은 기능 자체에 대한 용어
  • Advice : 실제로 기능을 구현한 객체. 개발자가 만드는 것은 Aspect가 아닌 클래스를 제작하고 @Advice 애노테이션을 적용하는 것이다.
  • Target : 실제 비지니스 로직을 수행하는 객체를 의미. 말 그대로 Aspect를 적용해야 하는 대상 객체를 의미한다.
  • Join Points : 작성된 Advice가 활약할 수 있는 위치를 의미
  • PointCuts : 여러 Join Points 중에서 Advice를 적용할 대상을 선택하는 정보
  • Proxy : Advice가 적용되었을 때 만들어지는 객체
  • Weaving : Advice와 Target이 결합되어서 프록시 객체를 만드는 과정

 Advice의 종류

  • Before Advice : target의 메소드 호출 전에 적용
  • After returning : target의 메소드 호출 이후에 적용
  • After throwing : target의 예외 발생 후 적용
  • After : target의 메소드 호출 후 예외의 발생에 관계없이 적용
  • Around : target의 메소드 호출 이전과 이후 모두 적용 (가장 광범위하게 사용됨)

반응형

'항해99 > TIL' 카테고리의 다른 글

34일차-7/10 토 -항해99  (0) 2021.07.11
33일차-7/09 금 -항해99  (0) 2021.07.10
31일차-7/07 수 -항해99  (6) 2021.07.07
30일차-7/06 화 -항해99  (0) 2021.07.06
29일차-7/05 월 -항해99  (0) 2021.07.05

댓글