AOP (Aspect-Oriented Programming)
AOP
AOP의 개념과 적용
AOP(Aspect-Oriented Programming)란 무엇이며, 어떤 문제를 해결하기 위한 것인가요?
관심사의 분리(Separation of Concerns)를 통해 공통적인 기능을 모듈화하여 코드의 중복을 줄이고 가독성을 높이는 프로그래밍 패러다임
로깅, 트랜잭션 관리, 보안, 예외처리 등을 비즈니스 로직과 분리하여 중복을 제거하는 것이 목표.
스프링에서 AOP를 어떻게 지원하나요?
AOP는 프록시 패턴을 통해 구현됩니다.
@Aspect 어노테이션과 부가 기능으로 @Before @After @Around 등의 에너테이션이 같이 사용됩니다.
Aspect라는 개념을 사용하여 공통 기능을 정의하고, PointCut을 통해 어디에 적용할지 지정.
AOP는 메서드 단위로 동작하면서 주로 서비스의 부가적인 기능을 처리합니다.
프록시 패턴이란 무엇이며, AOP에서 어떻게 활용되나요?
구조적 디자인 패턴으로, 실제 객체에 대한 대리자 또는 중간 매개체 역할을 하는 객체를 생성하여, 그 객체를 통해 실제 객체에 접근하는 방식.
실제 객체에 대한 접근을 제어하거나, 메서드 호출 전에 부가적인 작업을 처리하기 위한 대리 객체를 만드는 것이 목적.
캐싱, 권한 확인, 로깅 등의 작업을 합니다.
Aspect(측면)란 무엇이며, 어떤 구성 요소들이 있나요?
AOP의 핵심 개념 중 하나(Advice, Pointcut, JoinPoint, Aspect)로, 프로그램의 여러 부분에서 공통적으로 사용되는 기능을 모듈화한 것
Aspect는 주로 비즈니스 로직과는 별도로 존재하는 보조적인 기능을 처리합니다.
조인 포인트와 포인트컷에 대해 설명해주세요.
조인 포인트
Aspect가 적용될 수 있는 프로그램 내의 특정 실행 시점을 의미. AOP에서는 주로 메서드 실행 시점을 조인 포인트로 다룹니다.
메서드 실행전, 실행 후, 예외가 발생했을때, 생성자가 호출될 떄 등이 조인 포인트
포인트 컷
어떤 조인 포인트에 Aspect를 적용할지 결정하는 필터.
여러 조인 포인트 중에서 특정 조건을 만족하는 조인 포인트만 선택하여 부가 기능 적용.
Last updated