틀린 내용이 있을 수 있습니다. 댓글로 알려주시면 수정하도록 하겠습니다. 감사합니다!
스프링 AOP란?
Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 합니다.
관점 지향이란 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나눈 후
그 관점을 기준으로 모듈화를 진행한다는 뜻입니다.
(모듈화: 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것을 말합니다.)
위의 그림에서 색이 있는 것들은 모두 Concern라고 생각하면 됩니다.
(Concern : 여러 클래스와 메소드 등에서 비슷하게 작성되어 있는 코드를 의미합니다.)
각각의 클래스로 흩어져있는 Concern들을 우리는 Crosscutting Concerns 흩어진 관심사 라고 부릅니다.
AOP는 저 흩어진 관심사들을 모듈화하고 중요한 비즈니스 로직에서 분리하고 재사용하겠다는 것이
AOP의 취지가 되겠습니다.
스프링 AOP의 개념
Aspect
흩어진 관심사(Crosscutting Concerns)를 묶어서 모듈화 한 것을 뜻합니다
advice와 pointcut이 포함되어 있습니다.
Target
Aspect가 가지고 있는 Advice가 적용되는 대상을 뜻합니다.
대상에는 클래스와 메서드 등등이 포함되어 있습니다.
Join Point
join point는 메서드 실행 시점을 말합니다 advice가 적용될 위치 또는 끼어들수 있는 곳
생성자 호출 시, 호출 직전 , 필드에 접근 전 , 필드에서 값을 가져갈 때 등이 포함됩니다.
Point Cut
Join point의 상세한 스펙을 보여줍니다. 어떤것을 어디에 적용해야 하는지에 대한 정보를
구체적으로 전달해줍니다.
스프링 AOP 특징
Spring bean에만 AOP가 적용이 가능합니다.
프록시 기반의 구현체입니다.
(접근 제어 및 부가 기능 추가를 위해 프록시 객체 사용)
Spring IOC와 연결하여 Enterprise Application에서 제일 흔한 문제를
해결하기 위한 솔루션을 제공해줍니다.
(중복코드 , 프록시 클래스 작성의 번거로움 , 객체 간의 관계 복잡도 등)
참고 문서
https://yadon079.github.io/2021/spring/spring-aop-core
'JAVA' 카테고리의 다른 글
[Spring] JPA 의 개념과 장단점 (0) | 2022.12.16 |
---|---|
Java - 표기법 정리 (0) | 2022.12.08 |