From 19d1854e97eb81dbecebb1902b34ab55d8aa1940 Mon Sep 17 00:00:00 2001 From: zaien24 Date: Wed, 26 Aug 2020 22:31:45 +0900 Subject: [PATCH] =?UTF-8?q?=EC=8A=A4=ED=94=84=EB=A7=81=20@AOP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../samples/petclinic/owner/LogAspect.java | 29 +++++++++++++++++++ .../petclinic/owner/LogExecutionTime.java | 4 +++ .../petclinic/owner/OwnerController.java | 6 ++++ 3 files changed, 39 insertions(+) create mode 100644 src/main/java/org/springframework/samples/petclinic/owner/LogAspect.java create mode 100644 src/main/java/org/springframework/samples/petclinic/owner/LogExecutionTime.java diff --git a/src/main/java/org/springframework/samples/petclinic/owner/LogAspect.java b/src/main/java/org/springframework/samples/petclinic/owner/LogAspect.java new file mode 100644 index 000000000..109dc2b21 --- /dev/null +++ b/src/main/java/org/springframework/samples/petclinic/owner/LogAspect.java @@ -0,0 +1,29 @@ +package org.springframework.samples.petclinic.owner; + +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; +import org.springframework.util.StopWatch; + +@Component +@Aspect +public class LogAspect { + + Logger logger = LoggerFactory.getLogger(LogAspect.class); + + @Around("@annotation(LogExecutionTime)") + public Object logExecutionTime(ProceedingJoinPoint joinPoint) throws Throwable { + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + + Object proceed = joinPoint.proceed(); + + stopWatch.stop(); + logger.info(stopWatch.prettyPrint()); + + return proceed; + } +} diff --git a/src/main/java/org/springframework/samples/petclinic/owner/LogExecutionTime.java b/src/main/java/org/springframework/samples/petclinic/owner/LogExecutionTime.java new file mode 100644 index 000000000..fb95df6f6 --- /dev/null +++ b/src/main/java/org/springframework/samples/petclinic/owner/LogExecutionTime.java @@ -0,0 +1,4 @@ +package org.springframework.samples.petclinic.owner; + +public @interface LogExecutionTime { +} diff --git a/src/main/java/org/springframework/samples/petclinic/owner/OwnerController.java b/src/main/java/org/springframework/samples/petclinic/owner/OwnerController.java index 1fc7043c3..93e5e1abc 100644 --- a/src/main/java/org/springframework/samples/petclinic/owner/OwnerController.java +++ b/src/main/java/org/springframework/samples/petclinic/owner/OwnerController.java @@ -51,6 +51,7 @@ class OwnerController { } @GetMapping("/owners/new") + @LogExecutionTime public String initCreationForm(Map model) { Owner owner = new Owner(); model.put("owner", owner); @@ -58,6 +59,7 @@ class OwnerController { } @PostMapping("/owners/new") + @LogExecutionTime public String processCreationForm(@Valid Owner owner, BindingResult result) { if (result.hasErrors()) { return VIEWS_OWNER_CREATE_OR_UPDATE_FORM; @@ -69,12 +71,14 @@ class OwnerController { } @GetMapping("/owners/find") + @LogExecutionTime public String initFindForm(Map model) { model.put("owner", new Owner()); return "owners/findOwners"; } @GetMapping("/owners") + @LogExecutionTime public String processFindForm(Owner owner, BindingResult result, Map model) { // allow parameterless GET request for /owners to return all records @@ -102,6 +106,7 @@ class OwnerController { } @GetMapping("/owners/{ownerId}/edit") + @LogExecutionTime public String initUpdateOwnerForm(@PathVariable("ownerId") int ownerId, Model model) { Owner owner = this.owners.findById(ownerId); model.addAttribute(owner); @@ -109,6 +114,7 @@ class OwnerController { } @PostMapping("/owners/{ownerId}/edit") + @LogExecutionTime public String processUpdateOwnerForm(@Valid Owner owner, BindingResult result, @PathVariable("ownerId") int ownerId) { if (result.hasErrors()) {