본문 바로가기

개발자노트/Spring

Spring AOP ( 관점지향 프로그래밍 )

[관점지향 프로그래밍]
Aspect Oriented Programing


횡단관심(cross-cutting concern)의 분리를 허용함으로써 모듈성을 증가시키는 것이 목적인 프로그래밍 패러다임

코드 자체를 수정하지 않고, 기존의 코드에 추가동작을 추가함으로써 수행한다.

이를 통해 기능을 수행하는 코드의 핵심부를 복잡하게 채우지 않고도

비즈니스 로직에 핵심적이지 않은 동작들을 프로그램에 추가할 수 있도록 한다.

 

즉 , 기능을 비즈니스로직과 공통 모듈로 분리한 후, 필요 시점에 비즈니스 로직에 삽입하여 실행하도록 한다.

      핵심관점(비즈니스로직) + 횡단관점(트랜잭션 , 로그, 권한체크, 인증 ,예외처리 등)으로 관심의 분리를 이룬다.

 

쉽게말해 DI가 의존성(객체를 new)의 주입이라면 , AOP는 기능(logic)의 주입이라고 보면된다. 

 

비슷한 예로 지금껏 사용한 JDBCUtil이 있다.

 

 

 

기대효과
각각의 로직에 맞는 코드공간이 생기므로, 응집도가 높아짐 → 유지보수 용이