[영상후기] [10분 테코톡] 🌕제이의 Spring AOP

박철현·2023년 4월 9일
0

영상후기

목록 보기
82/160

movie

  • 인프라 로직(구현하려고 한 기능 외 부가 기능)

    • 애플리케이션의 전 영역에서 나타날 수 있음
    • 중복코드를 만들어낼 가능성 때문에 유지보수가 힘들어짐
    • 비즈니스 로직과 함께 있으면 비즈니스 로직을 이해하기 어려워짐
    • 비즈니스 로직을 수행하는데 있어 부가기능이 되는 인프라 로직 중복이 횡단으로 나타남(횡단 관심사, cross-cutting concern)
  • AOP(Aspect Oriented Programming) : 관점지향 프로그래밍

    • 횡단 관심에 따라 프로그래밍
    • OOP와 대비되는 것이 아닌 더 객체지향적으로 코드를 구성할 수 있도록 보완 (AOP가 OOP를 보완)
  • 각 언어마다 AOP 구현체가 있음, JAVA의 경우 AspectJ

  • AOP 용어

    • Target : 어떤 대상에 부가 기능을 부여할 것인가
    • Advice : 어떤 부가 기능? Before, AfterReturning, AfterThrowing, After, Around(실행 전, 후)
    • Join point : 어디에 적용할 것인가? 메서드, 필드, 객체, 생성자 등
      • Spring AOP에서는 메서드 실행에만 한정
    • Point cut : 실제 advice가 적용될 지점, Spring AOP에서는 advice가 적용될 메서드를 선정
  • AOP 구현 방법 : AspectJ에서는 컴파일과 클래스 로드시 사용
    1) 컴파일 : J.java -> J.class 컴파일 하는 시점에 해당하는 aspect를 끼워 넣어줘 AOP적용
    2) 클래스 로드시 : J.class 컴파일 까지는 괜찮은데, 클래스 로더가 메모리상에 올릴 때에 AOP를 적용시키는 방식
    3) 프록시 패턴 : 스프링 AOP에서 해당 방식 사용

    • J라는 타켓 클래스를 프록시로 감싸서(부가 기능을 제공하는 프록시로 감싸서) 실행하는 방식
    • IoC와 DI 기반이기 때문에 가능한 방식(런타임 시에만 적용)
  • Transactional : 로직의 시작점에 트랜잭션 얼어주고, 로직이 끝나는 지점에 커밋하는 코드가 항상 들어가야 하는데 어노테이션으로 인해 비즈니스로직에만 집중
    -> AOP 중 하나

profile
비슷한 어려움을 겪는 누군가에게 도움이 되길

0개의 댓글

관련 채용 정보