AOP는 Aspect Oriented Programming(관점 지향 프로그래밍)의 줄임말입니다.
관점지향 프로그래밍의 목표는 응집도 높은 개발입니다.
결국 스프링 프레임워크는 ‘낮은 결합도’와 ‘높은 응집도’가 목표인 것입니다.
관점지향의 반댓말은 무엇일까요?
Aspect Oriented Programming(AOP) | Object Oriented Programming(OOP) |
---|---|
관점지향 프로그래밍 | 객체지향 프로그래밍 (ex:Java) |
AOP는 관점지향 프로그래밍이니까 쉽게 말해 방법론 중에 하나라고 보시면 됩니다.
핵심로직과 공통로직
프로그램마다 메소드를 사용할 때 그 메소드를 쓰는 이유가 있습니다.
add라고 하면 뭔가 데이터를 넣기 위한 거고, remove를 하면 뭔가 데이터를 삭제하기 위한 거고
이런 것들을 메서드의 핵심로직이라고 이야기합니다.
메서드마다 핵심 로직이 있는데 쓰다보면 각 로직마다 반복등장하는 공통 로직(횡단관심)이 있습니다.
예를 들면,
구매, 댓글쓰기, 글쓰기 등 이런것들을 핵심로직, 핵심관심이라고 이야기합니다.
보안, 로그인(인증), 트랜잭션, 로깅처리 등을 공통로직, 횡단관심이라고 이야기합니다.
이런 공통로직을 핵심로직에서 분리해서 관점지향적으로 코딩을 하겠단 이야기입니다.
공통으로 사용하는 기능(횡단관심)들을 독립된 클래스로 분리하고 이 기능을 사용할 때 프로그램 코드에 직접 작성하지 않고 컨테이너에게 맡기는 것입니다.
이런 것들을 선언적 처리라고 합니다. “이거 할거야”라고 설정파일에 알려주는 것입니다.
코드에 작성하지 않았기 때문에 코드 변경이 없습니다. 이런 걸 높은 응집도라고 합니다.
결론적으로 유지보수성이 좋아집니다.