728x90

AOP(Aspect Oriented Programming)

  • 관점 지향 프로그래밍
  • 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고, 그 관점을 기준으로 각각 모듈화한 것
    • 핵심적인 관점 : 적용하고자 하는 핵심 비즈니스 로직
    • 부가적인 관점 : 핵심 로직을 실행하기 위한 데이터베이스 연결, 로깅, 파일 입출력 등
  • 계속 반복해서 쓰는 코드인 흩어진 관심사를 Aspect로 모듈화하며, 핵심적인 비즈니스 로직에서 분리하여 재사용하는 것이 AOP의 취지
  • 횡단 관심사의 분리를 허용함으로 모듈성을 증가시키는 것이 목적인 프로그래밍의 패러다임

 

AOP 특징

  • 프록시 패턴 기반의 AOP 구현체
    • 프록시 패턴을 쓰는 이유는 접근 제어 및 부가기능을 추가하기 위해
    • 왜 프록시 패턴인지? 기존 코드의 변경 없이 접근 제어 또는 부가 기능 추가를 위해서
  • 스프링 빈에만 AOP를 적용 가능
  • 모든 AOP 기능을 제공하는 것이 아닌 스프링 IoC와 연동하여 엔터프라이즈 애플리케이션에서 가장 흔한 문제(중복코드, 프록시 클래스 작성의 번거로움, 객체들 간 관계 복잡도 증가 등)에 대한 해결책을 지원하는 것이 목적

 

@AOP

스프링 @AOP를 사용하기 위해선 다음과 같은 의존성을 추가해야한다.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-aop</artifactId>
</dependency>

# 참고 사이트

- https://engkimbs.tistory.com/746

- https://yadon079.github.io/2021/spring/spring-aop-core

728x90

'IT > Spring' 카테고리의 다른 글

[Spring] 정적 컨텐츠  (0) 2022.06.18
[Spring] Bean  (0) 2022.06.18
[Spring] 빌드하는 법  (0) 2022.06.18
[Spring] View 환경설정 - Welcome page  (4) 2022.06.17
Spring[2] - 스프링과 메이븐  (0) 2022.06.17

+ Recent posts