IT/development

[springBoot] Spring AOP simple source

알 수 없는 사용자 2023. 10. 19.

RestController 😄

package study.springaoptest.web;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import study.springaoptest.model.User;
import study.springaoptest.service.TestService;

@RestController
@Slf4j
@RequestMapping("/api/v1/user")
@RequiredArgsConstructor
public class TestRestController {

    private final TestService testService;

    @GetMapping("")
    public void list() {
        testService.list();
    }

    @PostMapping("")
    public void post(@RequestBody User user) {
        testService.post();
    }

    @DeleteMapping("")
    public void delete() {
        testService.delete();
    }

    @PutMapping("")
    public void update() {
        testService.update();
    }
}

Service 😎

package study.springaoptest.service;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

@Service
@Slf4j
@RequiredArgsConstructor
public class TestService {


    public void post() {
        log.info("등록~");
    }

    public void list() {
        log.info("조회~");
    }

    public void delete() {
        log.info("삭제");
    }

    public void update() {
        log.info("수정");
    }
}

Vo 😙

package study.springaoptest.model;

import lombok.Data;

@Data
public class User {

    private Long id;
    private String name;
}

Aop 🤗

package study.springaoptest.aop;

import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;

@Aspect
@Slf4j
@Component
public class LogAspect {

    @Around("execution(* study.springaoptest.service..*.*(..))")
    public Object logging(ProceedingJoinPoint joinPoint) throws Throwable{
        log.info("Begin Method~");
        Object result = joinPoint.proceed();
        log.info("end Method~");
        return result;
    }
}

결과 🙄

[springBoot] Spring AOP simple source - undefined - 결과 🙄
post request
[springBoot] Spring AOP simple source - undefined - 결과 🙄
put request

공통관심사인 2개의 로그를 찍는 기능을 AOP를 이용해 서비스의 모든 메서드에 적용했다.

해당 패키지의 서비스에 작성하는 모든 메서드 실행 시 저 로그가 찍힌다.


개인 스터디 기록을 메모하는 공간이라 틀린점이 있을 수 있습니다.

틀린 점 있을 경우 댓글 부탁드립니다.

reference

 

[spring boot] AOP

Spring boot에서 AOP 사용해보기...

zkdlu.github.io