Benji3
개발 일지
Benji3
전체 방문자
오늘
어제
  • 전체 (50)
    • 세미나 (3)
    • 공부노트 (47)
      • 스프링 (10)
      • 머신러닝 (2)
      • 자바 (4)
      • 클라우드 (7)
      • 개발서적 (3)
      • 데이터베이스 (6)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • MySQL
  • 개발자
  • Ruby on Rails
  • 프로그래밍
  • java
  • jpa
  • 역사
  • 서버
  • db
  • 컴퓨터
  • WSL
  • 회고
  • 루비온레일즈
  • 프론트엔드
  • Rails
  • 데이터베이스
  • ruby
  • rubyonrails
  • git
  • selenide

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Benji3

개발 일지

공부노트/스프링

Spring AOP 적용

2022. 6. 25. 19:12

빈 후처리기를 사용한 프록시 적용

  • 전역 Bean 후처리기를 Spring 에서 제공하고 있다.
  • Bean 후처리기란 Spring Cotext가 객체 생성 후, Container 에 Bean 으로 등록하기 전 실행하는 로직이다.
  • 빈 후처리 로직에 프록시 bean을 등록하게 하면 공통으로 같은 프록시가 적용될 수 있다.
    • 이전 실습에서는 프록시 타겟마다 프록시 생성을 일일이 해준 것을 빈 후처리기를 통해 코드 재사용성을 높였다.

빈 후처리기 + 포인트 컷

  • 빈 후처리기는 전역을 대상으로 실행되기 때문에, 프록시 적용이 필요한 bean 에만 적용되도록 필터링이 필요하다.
  • 필터링 역할을 포인트 컷이 할 수 있다.
  • Spring AOP 를 사용하면 AnnotationAwareAspectJAutoProxyCreator라는 빈후처리기가 스프링 빈으로 자동 등록된다.
  • AnnotationAwareAspectJAutoProxyCreator는 Spring 내 org.springframework.aop.Advisor를 Bean을 스캔해서 전역 Advisor로 등록한다. 이 때, advisor 내 포인트컷 정보를 통해 프록시를 생성할지말지 판단한다. 클래스 내 프록시가 적용되는 메서드 하나만 있어도 해당 클래스는 프록시로 등록된다.
  • 포인트컷 정보는 프록시 객체를 생성할 때 사용되고, 프록시 advise 가 실행될 때도 필터링으로 사용된다.
  • Spring AOP 의 AspectJExpressionPointcut은 특정 문법의 표현식을 통해 쉽게 포인트컷을 만들 수 있다.
  • pointcut 에 해당하는 클래스만 프록시를 생성해서 시스템 비용 낭비를 줄인다.

멀티 Advisor

  • Spring AOP 는 한 객체에 여러 프록시를 등록하는 대신, 여러 advisor(pointcut+advice)를 사용한다.
  • 프록시 생성 시에는 여러 advisor 내의 pointcut 중 하나에 해당되더라도 프록시를 생성한다.
  • advice 실행 전에는 해당 pointcut에 해당되면 해당 advice를 실행한다.
저작자표시 (새창열림)

'공부노트 > 스프링' 카테고리의 다른 글

[JPA] N+1 문제  (0) 2022.08.06
AOP / Spring AOP 요약  (0) 2022.07.16
스프링 AOP  (0) 2022.06.19
프록시 패턴과 데코레이션 패턴  (0) 2022.04.30
Strategy Pattern, Template Callback 패턴  (0) 2022.04.24
    '공부노트/스프링' 카테고리의 다른 글
    • [JPA] N+1 문제
    • AOP / Spring AOP 요약
    • 스프링 AOP
    • 프록시 패턴과 데코레이션 패턴
    Benji3
    Benji3
    컴퓨터 프로그래밍과 관련된 포스팅을 합니다.

    티스토리툴바