개발 일지/Spring

[Spring] AOP

미숫가루설탕많이 2023. 2. 2. 15:10

 AOP(Aspect Oriented Programming)란, 관점 지향 프로그래밍 정도로 해석할 수 있다. 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나눠서 보고 그 관점을 기준으로 각각 모듈화 하는 것이다.

 

 객체 지향 프로그래밍은 애플리케이션을 설계할 때 클래스가 단일 책임을 갖도록 분리하여 각 모듈의 결합도가 낮아지게 한다. 하지만, 여러 클래스에 로깅이나 보안 및 트랜잭션 등의 공통된 기능들이 흩어져 존재할 수 있다는 한계가 있다. 따라서 AOP가 필요한 것이다.

 

 다시 말해, AOP는 애플리케이션의 핵심 업무 로직에서 로깅이나 보안, 트랜잭션 같은 공통 기능 로직들을 분리하는 것이라고 생각하면 된다.

 

 애플리케이션을 개발하다보면 공통적으로 사용되는 기능들이 있기 마련인데, 이러한 공통 기능들에 대한 관심사를 공통 관심 사항(Cross-cutting concern)이라고 하며, 부가적인 관심 사항이라고도 표현한다.

 

 그리고 비즈니스 로직 즉, 애플리케이션의 주목적을 달성하기 위한 핵심 로직에 대한 관심사를 핵심 관심 사항(Core concern)이라고 한다.

 

 애플리케이션의 핵심 로직에서 공통 기능을 분리하게 되면 다음과 같은 이점을 얻을 수 있다.

  • 코드의 간결성 유지
  • 객체 지향 설계 원칙에 맞는 코드 구현
  • 코드의 재사용

 

 따라서 AOP를 적절히 활용해서 애플리케이션 전반에 걸쳐 적용되는 공통적인 기능들을 비즈니스 로직에서 깔끔하게 분리하여 재사용 가능한 모듈로 사용할 줄 알아야 한다.

'개발 일지 > Spring' 카테고리의 다른 글

[Spring] Spring Boot  (0) 2023.02.03
[Spring] PSA  (0) 2023.02.02
[Spring] IoC / DI  (0) 2023.02.02
[Spring] POJO  (0) 2023.02.02
[Spring] 의존성 주입(Dependency Injection, DI)  (1) 2023.01.04