AOP

핵심기능을 보조하기 위한 부가기능 개발을 할때, 여러 곳에서 공통으로 사용하는 부가기능에 대해서 횡단 관심사(cross-cutting concerns) 라고 한다.

이 부가기능의 문제점은 여러 곳에 적용되어 있는 경우, 혹은 여러곳에 적용해야하는 경우 코드의 단순호출이라고 할지라도 수 많은 코드를 고쳐야 한다.

위와 같은 문제점들은 일반적인 OOP 방식으로는 해결할 수 없다. 그래서 AOP(Aspect-Oriented Programming)가 개발되게 되었다.

AOP는 OOP(Object Oriented Programming)를 대체하는 수단이 아니라, 보조의 목적으로 개발되었다.

AOP 적용방식

컴파일 시점

.java 소스 코드를 컴파일러를 사용해서 .class 를 만드는 시점에 부가기능 로직을 추가한다. 디컴파일시에 부가기능 관련 호출 코드가 들어가는 것을 확인할 수 있다.

AspectJ 가 제공하는 특별한 컴파일러를 사용해야 한다.

특별한 컴파일러가 필요하고 사용이 복잡하여 실제로 잘 사용하지 않는다.