Day79 :) AOP

Nux·2022년 1월 11일
0

자바웹개발

목록 보기
93/105
post-thumbnail

AOP

  • 관점 지향 프로그래밍 Aspect Oriented Programming
  • 핵심로직에 집중 할 수 있도록 중복 작성해야하는 코드를 외부에 빼 놓는 것

설정

  • root-context.xml
<aop:aspectj-autoproxy />
  • pom.xml
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-aop</artifactId>
	<version>5.3.15</version>
</dependency>
<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjrt</artifactId>
    <version>1.8.6</version>
</dependency>
<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjweaver</artifactId>
    <version>1.8.6</version>
</dependency>

용어

Weaving

  • 보조업무가 프록시를 통해 주 업무에 주입되는 것

Advice

  • 보조업무의 구현체
  • 주 기능 실행 시 언제 공통기능을 적용할 지 정의

종류

Joinpoint

  • Advice를 적용 할 수 있는 지점
    • 메서드 호출, 예외처리, 필드 값 변경 등

Aspect

  • Advice+JoinPoint을 모듈화 한 것(한 데 묶은 것)
  • AOP의 기본모듈로써 여러 객체에 공통으로 적용되는 기능
  • what(공통기능) + When(언제) + Where(대상) 정보 포함

주요 어노테이션

@Aspect

  • 조인포인트와 결합시킨 프록시객체를 만들어서 스프링 컨테이너의 빈으로 등록

@Before

  • 공통기능이 대상 메소드 실행전에 실행

@After

  • 공통기능이 대상 메소드가 실행이 종료된 후에 실행

@AfterReturning

  • 공통기능이 대상 메소드가 오류 없이 종료된 후에 실행

@AfterThrowing

  • 공통기능이 대상 메소드 실행중 예외가 발생하며 실행

@Around

  • 공통기능이 대상 메소드 실행 전후에 실행
  • 선언적 트랜잭션처리를 지원하는 TransactionManager의 구현객체들과 유사

@Pointcut

  • 공통기능이 적용될 규칙을 지정할 때 사용

PointCut

  • 실제로 Advice가 적용되는 JointPoint
  • 어드바이스를 적용할 타겟의 메서드를 선별하는 정규표현식

Weaving

  • Advice를 핵심기능에 적용하는 것

특징

  • 스프링 빈에만 AOP 적용 가능
  • Spring은 프록시 기반 AOP 지원
    • 프록시: 핵심기능에 공통기능이 합쳐셔 생성된 객체

0개의 댓글