AOP(Aspect Oriented Programming) 용어 정리
S/W에서 클래스간의(객체간의) 결합도가 높을 경우 그들 중 어느 한 클래스(객체)에 수정이 발생하면 해당 클래스(객체)가 사용된 모든 소스 코드를 수정해야 하고 이러한 수정은 S/W 유지 보수의 측면에서 뜻하지 않은 문제를 발생시키거나 유지 보수를 복잡하고 어렵게 만드는 요인이 된다. 따라서 가능한 객체들간의 결합도를 낮추는 방향으로 가야 한다.
Spring에서 결합도를 낮추는 기법이 의존성 주입(IoC)과 AOP가 있는데 AOP의 용어를 명확히 핵심적으로 정리하고자 한다.
IoC와 AOP는 개발자가 소스코드에서 해 주지 않아도 Spring 컨테이너가 알아서 처리해 주므로 인해 소스코드 수정을 하지 않아도 된다는 개념이 핵심이다. 그렇게 하도록 하기 위해 필요한 것이 Spring 설정 파일에서의 설정을 통해서 Spring 컨테이너가 처리하도록 하는 식이다.
▶ 횡단 관심(Crosscutting Concerns)
비지니스 메소드마다 공통으로 등장하는 코드를 의미(예외, 로깅, 트랜잭션같은 코드).
▶ 핵심관심(Core Concerns)
핵심 비지니스 로직을 의미.
▶ Joinpoint
모든 비지니스 메소드들을 의미
▶ Pointcut
모든 비지니스 메소드들 중에서 횡단 관심 코드를 수행하기 원하는 "특정 비지니스 메소드"를 의미
▶ Advice
횡단관심에 해당하는 코드를 담고 있는 메소드를 의미
▶ Aspect
Pointcut과 Advice의 결합(어떤 Pointcut 메소드에 대해 어떤 Advice 메소드를 실행할지를 정의)
▶ Weaving
Advice가 삽입되는 과정
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
비지니스 로직 메소드 횡단관심 메소드
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Joinpoint Advice
Pointcut
Weaving
Aspect
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
'Spring MVC' 카테고리의 다른 글
ModelAndView의 setViewName() 메소드에 redirect: 사용하는 법 (0) | 2019.12.20 |
---|---|
AOP around의 proceed() 메소드 동작에 대한 개념 정리 (0) | 2019.12.11 |
@Qualifier 어노테이션의 NoUniqueBeanDefinitionException 이슈 문제 해법 (0) | 2019.12.09 |
전자정부프레임웤에서 컨트롤러 클래스 인식되게 하기 위한 환경설정법 (0) | 2019.05.08 |
Instantiation of bean failed; Failed to instantiate [......]: Specified class is an interface 에러 문제 (0) | 2018.10.26 |