본문 바로가기

Java/Spring

AOP

FILTER, AOP, INTERCEPTOR 는 전처리/후처리 할수 있다. but넘겨받는 매개변수,수행시점이 틀림

- Filter 는 servlet request,servlet response, filterchain 전달받음 (Dispatcher servelt이 요청을 전달받기 전)

 

- INTERCEPTOR는 Httpservlet request, Httpservlet response, Model&view , exception 전달받음

  INTERCEPTOR는 dispatchar 서블릿에서 controller 호출하기 전/후처리 가능.

 

- AOP는 메소드의 파라미터 값, return된 값 전달받음

  AOP는 실제 작성한 객체의 메소드가 실행되기 전 후. 

 

반복적으로 수행되면서 프로젝트를 가로지르는 횡단 관심사(Aspect)(필수 기능은 아니지만 반복 수행되는 작업.)

1. 로그기록 남기기(로깅)

2. 인증된 사용자인지 보안처리

 

묶어서 처리 하는 것이 AOP

 

실제코드의 변화는 없고, 부가적인 작업 추가해줌.

proxy : 간접접근 느낌.

 

spring이 proxy객체 생성해줌.

- target의 메소드 호출 전처리/후처리 가능

- 우리 눈에는 보이지 않지만 스프링이 자동생성해줌

target : 실제 controller, service 등 사용할 객체

 

advice : Aspect에 정의한 기능

joinpoints : target의 모든 메소드

Pointcut : joinpoints 중 공통기능이 적용된 녀석

 

SpringAOP 구현 클래스 관련 용어

용어 설명
Before Advice Target의 메소드 호출 전에 적용
After returning Target의 메소드 호출 이후에 적용
After throwing Target의 예외 발생 후 적용
After Target의 메소드 호출 후 예외의 발생에 관계없이 적용
Around Target의 메소드 호출 이전과 이후 모두 적용(가장 광범위하게 사용됨)

 

 

AOP 구현하기 

 

0.

pom.xml에 추가

<!-- annotation 기반 AOP -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>${org.aspectj-version}</version>
</dependency>

 

1. servlet-context > namespace> aop 추가

    <aop:aspectj-autoproxy /> 입력, 

 

2.

AOPAdvice 클래스 만들고

@Aspect
@Component추가 

3. servlet-context에 scan 추가

* 사용할 클래스랑 aop 랑 같은 곳에서 scan해야함

 

4.클래스 작성.

 

 

 

'Java > Spring' 카테고리의 다른 글

INTERCEPTOR  (0) 2023.08.14
트랜잭션 제어  (0) 2023.08.11
log4j pattern 모음  (0) 2023.08.11
프로필 사진 설정  (0) 2023.08.10
file upload 구현  (0) 2023.08.08