Java

spring aop란?

최종군 2024. 10. 18. 18:53

스프링 AOP란 

(Aspect-Oriented Programming)

으로 애플리케이션의 관심사 분리(Separation)을 

지원하는 프로그래밍이다 

 

주로 횡단 관심사(Cross-Cutting Concerns)을 처리하는 데 

사용이 된다. 

 

*횡단 관심사란 애플리케이션의 다양한 메서드에서 

발생하는 이벤트나 오류를 기록하는 기능이다 

 

로깅 : 애플리케이션의 다양한 메서드에서 발생하는 이벤트나 오류를 

기록하는 기능을 한다. 

 

보안 : 사용자의 인증 및 권한 검을 처리하는 기능이다 

 

트랜잭션 관리: 데이터베이스 트랜잭션을 관리하는 기능이다.

트랜잭션 시작, 커밋, 롤백 등을 모든 서비스에서 관리하려면 

중복 코드가 발생할 수 있다. 

 

성능 모니터링 애플리케이션의 성능을 추적하고 측정하는 기능이다 

여러 메서드나 서비스의 성능을 일관되게 모니터링해야 할 떄 유용하다. 

 

 

AOP 주된 목적으로는 

코드 중복 감소와 유지 보수 그리고 관심사 분리이다 

 

주방을 통한 예시이다 

 

주방 요리사가 만든 요리가 비즈니스 로직이라고 과정한다면 

 

주방 도구는 Aspect이다 

여러 음식을 만드는데 같은 주방 도구가 필요하다 

칼이라던가 후라이팬등 공통된 기능[즉 요리라는 기능]

 

조리 과정은 Join Point로 비유할 수 있다 

손질, 조림, 굽는 과정 등 

메서드 호출이나 객체 생성 같은 순간이 조인 포인트가 될 수 있다

 

 

Advice (어드바이스)

조인 포인트에서 실행될 코드이다.

메서드 호출 전후에 실행될 로직을 정의할 수 있다.

이건 음식 주문에 따라서 준비하는 요리사와 같다. 

 

  • Before: 메서드 실행 전에 실행
  • After: 메서드 실행 후에 실행
  • After Returning: 메서드가 정상적으로 반환된 후 실행
  • After Throwing: 메서드에서 예외가 발생한 후 실행
  • Around: 메서드 실행 전후에 실행

Pointcut (포인트컷):

어떤 Join Point에서 Advice를 적용할지 결정하는 표현식이다.

특정 메서드, 클래스 등에 대해 조건을 지정할 수 있다. 

 

 

 

'Java' 카테고리의 다른 글

Servlet Filter  (0) 2024.10.16
spring interceptor  (0) 2024.10.15
Java collections (ArrayList, HashSet) + HashMap  (0) 2024.07.15
자바 헷갈리는 내용 정리  (1) 2024.07.15
내가 잘 모르는 부분들 내용정리 JAVA  (0) 2024.07.15