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에 대해 기록을 할 예정이다.
'java > spring' 카테고리의 다른 글
[Spring 디자인 패턴] Spring boot : gradle로 AOP 설정하기 (2) (0) | 2022.04.03 |
---|---|
[spring boot] 에러 Failed to determine a suitable driver class (0) | 2021.12.24 |
[spring] spring project 만들기 (0) | 2021.12.23 |
[spring] 이클립스에 spring boot 설치 (0) | 2021.12.23 |