애플리케이션은 핵심 기능과 부가 기능으로 로직을 구별할 수 있습니다. 핵심 기능 : 특정 객체가 제공하는 객체 고유의 기능 부가 기능 : 핵심 기능을 보조하는 기능. 로그, 트랜잭션 등 부가 기능은 주로 공통 로직입니다. 반복된 코드가 곳곳에서 나타납니다. 중복이 발생합니다. 변경이 일어날 때, 그만큼 수정해야 합니다. AOP 관점 지향 프로그래밍(Aspect-Oriented Programming) 반복되는 부가 기능을 모아 모듈화하는 개발방법입니다. 객체 지향 프로그래밍에서 발생하는 중복을 제한하는 보조 방법입니다. AspectJ Framework AOP를 구현한 프레임워크입니다. 오류 검사, 오류 처리, 동기화, 캐싱, 모니터링, 로깅 등을 모듈화할 수 있습니다. 스프링은 AspectJ의 문법을 차용..