본문 바로가기
개발/자바

스프링 프레임워크 AOP에 대해..

by wusdlqslek 2024. 3. 25.

스프링 프레임워크에서의 AOP(관점 지향 프로그래밍)

AOP는 반복적으로 수행해야 하는 공통 로직을 한 곳에 모아서 관리하는 방법이다. 로깅, 보안 체크, 트랜잭션 관리 등과 같은 공통 기능들을 각각의 메서드나 클래스에 직접 구현하게 되면 코드가 중복되고 유지보수가 어려워진다.

AOP는 이런 문제를 해결하기 위해 공통 기능을 별도의 코드로 분리하여 관리한다. 그리고 이 공통 기능을 필요한 곳에 적용하여 사용한다. 이때 공통 기능을 '횡단 관심사(Cross-Cutting Concern)'라고 부르며, 이를 처리하는 코드를 '어드바이스(Advice)'라고 한다.

스프링 프레임워크에서 AOP를 사용하면 다음과 같은 장점이 있다:

  • 코드 중복 제거: 공통 기능을 한 곳에서 관리하므로 코드 중복을 제거할 수 있다.
  • 모듈화: 공통 기능을 별도의 모듈로 분리하여 관리할 수 있어 코드의 모듈화가 향상된다.
  • 유지보수성 향상: 공통 기능을 수정할 때 한 곳만 변경하면 되므로 유지보수성이 향상된다.
  • 코드의 간결성: 비즈니스 로직과 공통 기능을 분리하여 코드의 간결성을 유지할 수 있다.

스프링 프레임워크에서 AOP를 구현하는 방법은 다음과 같다:

  1. 공통 기능을 구현한 클래스를 작성한다. 이를 '어드바이스 클래스'라고 한다.
  2. 어드바이스 클래스에 @Aspect 어노테이션을 붙여 AOP 기능을 적용할 수 있도록 한다.
  3. 공통 기능이 적용될 지점을 지정한다. 이를 '포인트컷(Pointcut)'이라고 하며, @Pointcut 어노테이션을 사용하여 정의한다.
  4. 어드바이스 클래스의 메서드에 @Before, @After, @Around 등의 어노테이션을 사용하여 공통 기능이 적용될 시점을 지정한다.
  5. XML 설정 파일이나 Java 설정 클래스에 AOP 관련 설정을 추가하여 AOP를 활성화한다.

예시: 메서드의 실행 시간을 로그로 남기는 공통 기능 구현

메서드의 실행 시간을 로그로 남기는 공통 기능을 구현한다고 가정해보자. 이때 어드바이스 클래스에는 메서드 실행 전후에 시간을 측정하고 로그를 출력하는 코드를 작성한다. 그리고 포인트컷을 정의하여 특정 패키지나 클래스, 메서드에 이 공통 기능을 적용할 수 있다. 이렇게 하면 해당 메서드가 실행될 때마다 자동으로 실행 시간이 로그로 남게 된다.

AOP를 사용하면 공통 기능을 효과적으로 관리하고 적용할 수 있다. 스프링 프레임워크에서는 AOP를 쉽게 구현할 수 있도록 다양한 기능과 어노테이션을 제공하고 있다. AOP는 복잡한 애플리케이션을 개발할 때 코드의 중복을 제거하고 유지보수성을 향상시키는 데 도움이 된다.

반응형

댓글