spring 디자인 패턴이라고 하면 맨 처음으로 떠오르는 것이 아마 aop가 아닐까.. ㅎㅎㅎ

 

프록시 : 핵심 기능의 실행은 다른 객체에 위임하고 부가적인 기능을 제공하는 객체 !

AOP : 공통 기능 구현과 핵심 기능 구현을 분리하는 것 ..

(여러 객체에 공통으로 적용할 수 있는 기능을 구분함으로써 재사용을 높혀줌!)

 

스프링 AOP는 프록시 객체를 자동으로 만들어주니까 공통 기능을 구현한 클래스만 맞춰 구현해주면 된다 !

XML 을 이용한  AOP와 어노테이션을 이용한 AOP사용 방법이 있다. 

 

어노테이션이 편하니까 .. 어노테이션을 이용한 AOP 사용 방법 !.!

아, 나는 spring boot + gradle 사용중이다 .. 

(spring + maven 을 이용해서 진행한 적도 있어서 그것도 기록해놔야겠다 !.!)

 

1. 우선 build.gradle의 dependencies에 아래 코드를 입력해준다

implementation 'org.springframework.boot:spring-boot-starter-aop'

 

2. @Aspect 어노테이션 이용

@Aspect 어노테이션은 공통 기능을 제공하는 클래스를 적용할 수 있다.

아래와 같이 코드를 작성해보았다.

@Component 는 @SpringbootApplication 이 처음 실행 될 때 컨테이너를 만들어 실행되기 위해 작성한 것이니, 상황에 따라 생략해도 된다 !

 

우선,,

@Pointcut은 실제 Advice가 적용되는 기점을 말한다.

'*'은 모든 값을 표현할 수 있고, '..'은 0개 이상이라는 의미이다.

그리고 아래 코드와 같이 'public' 수식어를 작성해도 되지만, 어차피 스프링 AOP의 경우, public에서만 적용 가능하기 떄문에 생략해주어도 괜찮다 !!

@Around("execution(public * hello.hellospring..*(..))")

 

아, 그리고 pointcut을 하고 싶은 위치가 한군데 이상이면

@Around("execution(* hello.hellospring..*(..)) || execution(* hello.hellospring..*(..))")

이런 식으로 중간에 연산자를 넣어서 사용할 수 있다.

 

다음번에는 @Around외의 다른 Advice에 대해 기록을 할 예정이다. 

+ Recent posts