728x90
반응형

[spring boot] AOP 설정

 

작성일자 : 2019.07.21

환경 : Spring Boot 2.1.6, Gradle 3

 

 

추가 및 수정 파일

 

0. 기본 개념

 

1) 관점(Aspect)

구현하고자 하는 횡단 관심사의 기능, 한개 이상의 포인트컷과 어드바이스의 조합으로 만들어진다.

 

2) 조인포인트(Join point)

관점(Aspect)를 삽입하여 어드바이스가 적용될 수 있는 위치

 

3) 어드바이스(Advice)

관점(Aspect)의 구현체로 조인 포인트에 삽입되어 동작하는 코드 



 

1. AOP 의존성 추가

 

build.gradle

..

dependencies {

   ..

   compile('org.springframework.boot:spring-boot-starter-aop')

   ..

}

 

 

 

 

2. AOP 사용 설정

 

ProjectApplication.java

 

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.EnableAspectJAutoProxy;

@SpringBootApplication
@EnableAspectJAutoProxy // Enable AOP
public class AoptestApplication {
   public static void main(String[] args) {
      SpringApplication.run(AoptestApplication.class, args);
   }

}

 

 

 

3. AOP를 적용할 대상 구현

 

AopController.java

 

package com.example.demo;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import org.springframework.web.bind.annotation.*;

@RestController
public class AopController {
    private static final Logger logger = LoggerFactory.getLogger(AopController.class);

    @GetMapping("/hello")
    public void hello(){
        logger.info("hello AOP");
    }

}

 

 

 

4. AOP 설정 파일 추가

 

AopConfig.java

 

package com.example.demo;

import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

@Aspect
@Component
public class AopConfig{
    private static final Logger logger = LoggerFactory.getLogger(AopConfig.class);

    @Before("execution(* com.example.demo.AopController.*(..))")
    public void doSomethingBefore() {
        logger.info("AOP Test : Before ");
    }

    @After("execution(* com.example.demo.AopController.*(..)) ")
    public void doSomethingAfter() {
        logger.info("AOP Test : After");
    }
}

 

적용 대상의 실행 전,후에 각각 aspect 동작하도록 설정

 

 

# Advice 종류

 

@Before : 조인포인트 전에 실행 
@AfterReturning : 조인포인트에서 성공적으로 리턴 된 후 실행
@AfterThrowing : 예외가 발생하였을 경우 실행
@After : 조인포인트에서 메서드의 실행결과에 상관없이 무조건 실행
@Around : 조인포인트의 전 과정(전, 후)에 수행

 

 

# execution 포인트컷 예

 

execution([수식어] [리턴타입] [클래스이름] [이름]([파라미터])

 

 

 

5. 확인

 

대상 접근

로그 확인

 

 

728x90
반응형

'Java' 카테고리의 다른 글

[Spring] Cache 적용  (0) 2019.09.28
Spring Boot + MySQL 연동  (0) 2019.09.14
[Spring Boot-Vue] 프로젝트 빌드  (0) 2019.07.21
[Spring Boot] JPA(Hibernate) 적용  (0) 2019.07.06
[Spring Boot] Eclipse 내 Lombok 설치  (0) 2019.07.05

+ Recent posts