AOP

최지홍·2022년 4월 6일
0

매일 공부

목록 보기
31/40
  • AOP
    • OOP를 더욱 보완, 확장하여 OOP를 OOP 답게 사용할 수 있도록 도움
    • AOP 도입 전까지는 객체의 재사용에도 불구하고 필수적으로 반복되는 코드 중복은 여전
    • AOP의 가장 기초 개념은 ‘관심의 분리’
    • 기능을 비즈니스 로직과 공통 모듈로 구분한 후 개발자의 코드 밖에서 필요한 시점에 비즈니스 로직에 삽입하여 실행
    • 핵심 관점(비즈니스 로직) + 횡단 관점(트랜잭션, 로그, 권한 체크 등)

  • 계좌이체, 입출금, 이자계산이라는 로직을 처리할 때, 모두 똑같이 로깅, 보안, 트랜잭션을 처리해줘야 함
  • 하지만, AOP 에서는 로깅, 보안, 트랜잭션이라는 공통 관심을 따로 빼내어 계좌이체, 입출금, 이자계산이라는 핵심 관심에 횡단으로 삽입
  • 각 객체별로 처리했던 것을 각 관점별로 외부에서 접근하는 것이 핵심
  • 개발자는 계좌이체, 입출금, 이자계산과 같은 핵심 기능을 만들고, 공통적인 관심 기능(로깅, 보안, 트랜잭션)을 처리하는 모듈을 분리해서 개발한 후, 필요한 시점에 자동으로 공통적인 관심 기능이 삽입되도록 하는 것
  • 용어 정리
    • Aspect: 오브젝트와 같은 개념으로 Advice와 PointCut을 담고 있음
    • Advice: 실제 부가기능 구현 부분. 무엇을 언제 할지 정의
    • PointCut: JointPoint에서 정한 위치를 선정하는 방법으로 구체적으로 지정
    • JointPoint: Advice가 적용될 수 있는 위치
    • Proxy: 프록시 패턴으로 스프링 AOP 동작. 빈 요청 시 프록시 빈이 호출되어 부가기능 처리 후 전달
  • 참조
profile
백엔드 개발자가 되자!

0개의 댓글