스프링에서는 AOP(Aspect Oriented Programming)를 지원하고 있다. AOP는 관점 지향 프로그래밍 등으로 많이 번역되는데 객체 지향 프로그래밍, 서비스 지향 프로그래밍 등 프로그래밍 개발론의 일종이다. AOP에서는 프로그램을 핵심 기능과 공통 기능으로 분리하여 모듈화, 재사용성을 높이고 핵심 기능 개발에만 집중할 수 있다는 장점이 있다. AOP 프로그램을 핵심 기능과 공통 기능으로 분리한다는 것은 무엇일까? 이는 애플리케이션을 개발할 때 어느 부분에 더 집중해야 하는지, 즉 어디에 좀 더 관심사(concern)를 두어야 하는지 분리하는 것이다. 구글에서 스프링 AOP를 검색하면 지겹도록 나오는 예제지만 들어보자면 어떤 메서드의 실행 시간을 측정하는 로직을 구현해야 한다고 하자. 가장..