오늘의하루

AOP를 통한 유지 보수성 향상 - 프로젝트의 매개변수 관리 혁신 본문

코딩공부

AOP를 통한 유지 보수성 향상 - 프로젝트의 매개변수 관리 혁신

오늘의하루_master 2024. 9. 22. 00:53

1) 문제발견

프로젝트에서 각 화면 별 Controller가 JSP를 호출할 때, Model에 로직 수행 후 결과를 담으며 다른 Controller에서는 매개변수가 있을때 그 매개변수에 세팅을 해줘야 하는 구조로 설계되었습니다. 총 100개 이상의 화면이 존재하는 상황에서 프로젝트 완료 시점에 Controller의 매개변수가 수정되는 문제가 발생했습니다. 이로 인해 각 Controller에서 매개변수를 개별적으로 수정해야 하는 비효율이 생겼고 이는 코드의 일관성과 유지 보수에 큰 부담이 되었습니다.

2) 해결

이 문제를 해결하기 위해 AOP(Aspect-Oriented Programming)를 도입했습니다.
AOP를 통해 매개변수 관리 로직을 중앙 집중화하여 코드의 가독성과 유지 보수성을 극대화했습니다.
구체적인 구현은 다음과 같습니다.

  1. Aspect 정의:
    • AOP를 활용하여 매개변수 전처리 및 후처리 로직을 담당하는 Aspect를 정의했습니다.
    • @Around 어노테이션을 사용하여 매개변수를 조작하거나 Model 객체에 담을 로직을 중앙에서 관리할 수 있게 되었습니다.
  2. @JSPView 어노테이션:
    • JSP와의 연계를 위해 @JSPView라는 사용자 정의 어노테이션을 만들었습니다.
    • 어노테이션을 메서드에 적용하여 해당 메서드가 반환하는 Model 객체를 중앙에서 관리할 수 있습니다.
    • 어노테이션을 포인트컷으로 사용하여 JSP 뷰로 전달될 데이터를 동적으로 설정하고 필요한 로직을 한 곳에서 변경할 수 있도록 함으로 이는 데이터 전달 방식의 일관성을 유지하는 데 큰 도움이 되었습니다.
  3. 매개변수 처리:
    • Controller 중 @JSPView가 적용되지 않은 Controller의 매개변수가 있으며 해당 매개변수가 프로젝트에서 정의한 특정 객체를 상속받고 있다면 해당 객체에 공통 설정을 적용하여 실제 로직이 실행되도록 하였습니다.
    • 이를 통해 코드 중복을 줄이고 객체의 공통 설정을 통해 유지 보수성을 더욱 강화할 수 있었습니다.
  4. 유지 보수성 및 확장성 향상:
    • AOP의 적용으로 매개변수 수정 시 발생할 수 있는 유지 보수 비용을 최소화했습니다.
    • 기존에는 모든 Controller에서 매개변수를 수정해야 했지만 이제는 AOP를 통해 중앙에서 수정함으로써 코드 변경의 복잡성을 줄였습니다.
    • 새로운 기능 추가 시에도 기존 로직을 수정하지 않고 새로운 Aspect를 추가하는 방식으로 확장할 수 있어 프로젝트의 유연성을 높였습니다.
Comments