글쓰기

개인 공부 상자/참고 자료

스프링에서 AOP란?

RSpring41 2021. 10. 7. 11:37

- AOP(Aspect Oriented Programming)란?

관점 지향 프로그래밍이라고 불리며 핵심기능(관점), 부가적인 관점(기능)으로 나누어 각각 모듈화 하겠다는 것이다.

 

출근, 산책, 쇼핑이라는 행동을 예를 들어 생각해보면 모두 집을 나가고 들어오는 행동이 필요하다.

이때 핵심기능(관점)은 출근, 산책, 쇼핑이고, 부가적인 관점(기능)은 집을 나갔다 들어오는 행동이다.

이렇게 중첩되는 부가적인 관점(기능)을 모듈화하고 이를 어떤 시점에 어느 지점에 사용할지 정의해 주게 된다.

 

모듈 : 집을 나가기

시점 : 핵심기능(관점)인 출근, 산책, 쇼핑을 하기 전

지점 : 집

 

 

 

 

 

- AOP 주요 개념

  • Aspect : 위에서 설명한 흩어진 관심사를 모듈화 한 것. 주로 부가기능을 모듈화함.
  • Target : Aspect를 적용하는 곳 (클래스, 메서드.. )
  • Advice : 실질적으로 어떤 일을 해야 할 지에 대한 것, 실질적인 부가기능을 담은 구현체
  • JointPoint : Advice가 적용될 위치, 끼어들 수 있는 지점. 메서드 진입 지점, 생성자 호출 시점, 필드에서 값을 꺼내올 때 등 다양한 시점에 적용 가능
  • PointCut : JointPoint의 상세한 스펙을 정의한 것. 'A란 메서드의 진입 시점에 호출할 것'과 같이 더욱 구체적으로 Advice가 실행될 지점을 정할 수 있음

 

- 스프링 AOP 특징

  • 프록시 패턴 기반의 AOP 구현체, 프록시 객체를 쓰는 이유는 접근 제어 및 부가기능을 추가하기 위해서임
  • 스프링 빈에만 AOP를 적용 가능
  • 모든 AOP 기능을 제공하는 것이 아닌 스프링 IoC와 연동하여 엔터프라이즈 애플리케이션에서 가장 흔한 문제(중복 코드, 프록시 클래스 작성의 번거로움, 객체들 간 관계 복잡도 증가...)에 대한 해결책을 지원하는 것이 목적

 

- 사용되는 태그

  • @Before (이전) : 어드바이스 타겟 메소드가 호출되기 전에 어드바이스 기능을 수행
  • @After (이후) : 타겟 메소드의 결과에 관계없이(즉 성공, 예외 관계없이) 타겟 메소드가 완료되면 어드바이스 기능을 수행
  • @AfterReturning (정상적 반환 이후)타겟 메소드가 성공적으로 결과값을 반환 후에 어드바이스 기능을 수행
  • @AfterThrowing (예외 발생 이후) : 타겟 메소드가 수행 중 예외를 던지게 되면 어드바이스 기능을 수행
  • @Around (메소드 실행 전후) : 어드바이스가 타겟 메소드를 감싸서 타겟 메소드 호출 전과 후에 어드바이스 기능을 수행

 

 

 

자료 출처: https://engkimbs.tistory.com/746 [새로비]

 

 

'개인 공부 상자 > 참고 자료' 카테고리의 다른 글

Log4j와 Slf4j를 이용한 Log출력  (0) 2021.10.14
Spring Framework 실행 순서  (0) 2021.10.07
스프링 컨테이너란?  (0) 2021.10.07
이름.properties란?  (0) 2021.10.06
Security.xml와 태그 정리  (0) 2021.10.05