Develop/Spring
[Spring Boot] AOP와 Spring AOP를 뜯어보자 (feat. Proxy, @Transactional)
AOP Aspect Oriented Programming : 관점 지향 프로그래밍 AOP의 사전적 정의는 다음과 같다. 횡단 관심사의 분리를 허용함으로써 모듈성을 증가시키는 것이 목적인 프로그래밍 패러다임. 이것만 보면 무슨 말인지 잘 모르겠지만, 우리에게 익숙한 OOP를 생각하면 보다 쉽게 이해할 수 있다. OOP (객체 지향 프로그래밍)을 떠올려보자. OOP는 프로그램을 객체들의 모임이라는 관점에서 바라보자는 프로그래밍 패러다임으로, 비즈니스 로직의 모듈화를 중심으로 구현된다. 하지만 비즈니스 로직을 중심으로 구현되는 OOP에 한 가지 문제가 생긴다. 로깅, 실행시간 측정과 같은 부가 기능들을 처리하기 힘들다는 것이다. 프로그램은 객체들의 상호작용이라는 관점답게, OOP는 상속이나 위임 등을 이용해 ..