hayu's 개발 일지

[TIL]240429 AOP 본문

프레임워크/spring

[TIL]240429 AOP

hayu00 2024. 4. 29. 21:48

AOP

  • Spring AOP는 스프링 프레임워크에서 제공하는 기능 중 하나로 관점 지향 프로그래밍을 지원하는 기술이다.
  • AOP는 로깅, 보안, 트랜잭션 관리 등과 같은 공통적인 관심사를 모듈화하여 코드 중복을 줄이고 유지 보수설을 향상하는데 도움을 준다.

관점 지향 프로그래밍(Aspect-Oriented Programming, AOP) 이란?

  • 객체 지향 프로그래밍 패러다임을 보완하는 기술로 메서드나 객체의 기능을 핵심 관심사(Core Concern)와 공통 관심사(Cross-cutting-Concern)로 나누어 프로그래밍하는 것을 말한다.
  • 핵심 관심사를 각 객체가 가져야 할 본래의 기능이며, 공통 관심사는 여러 객체에서 공통적으로 사용되는 코드를 말한다.

 

관점 지향 프로그래밍의 정의는 핵심 관심사와 공통 관심사를 분리하여 프로그래밍하는 것을 의미한다.

  • 3개의 클래스가 있다고 가정하면 각각의 클래스에 있는 색 블록은 동일하게 사용되는 코드를 의미한다.
  • 한 클래스에서 코드를 수정하게 되면 다른 클래스에서도 수정해야한다. 그래서 공통 코드를 묶어서, 모듈화를 시킨다. → 코드의 재사용성과 유지보수성을 강화한다.

⇒ 관점 지향 프로그래밍에서는 소스코드에서 반복적으로 사용하는 코드를 하나로 묶어서 모듈화하여 재사용성과 유지보수성을 높일 수 있는 강점을 가진다.

 

AOP 주요 용어

Aspect - 공통적인 기능들을 모듈화 한것을 의미한다.
Target - Aspect가 적용될 대상을 의미하며 메소드, 클래스 등이 이에 해당 된다.
Join point - Aspect가 적용될 수 있는 시점을 의미하며 메소드 실행 전, 후 등이 될 수 있다.
Advice - Aspect의 기능을 정의한 것으로 메서드의 실행 전, 후, 예외 처리 발생 시 실행되는 코드를 의미한다.
Point cut - Advice를 적용할 메소드의 범위를 지정하는 것을 의미한다.

AOP 주요 애너테이션

@Aspect 해당 클래스를 Aspect로 사용하겠다는 것을 명시한다.
@Before 대상 “메서드”가 실행되기 전에 Advice를 실행한다.
@AfterReturning 대상 “메서드”가 정상적으로 실행되고 반환된 후에 Advice를 실행한다.
@AfterThrowing 대상 “메서드에서 예외가 발생”했을 때 Advice를 실행한다.
@After 대상 “메서드”가 실행된 후에 Advice를 실행한다.
@Around 대상 “메서드” 실행 전, 후 또는 예외 발생 시에 Advice를 실행한다.

 

참고 자료

- https://adjh54.tistory.com/133

- https://engkimbs.tistory.com/entry/%EC%8A%A4%ED%94%84%EB%A7%81AOP