| src/main/java/de/gedoplan/seminar/sbt/di/exercise/aop/MethodCounter.java | ●●●●● Patch | Ansicht | Raw | Blame | Historie | |
| src/main/java/de/gedoplan/seminar/sbt/di/exercise/rest/MethodCountResource.java | ●●●●● Patch | Ansicht | Raw | Blame | Historie |
src/main/java/de/gedoplan/seminar/sbt/di/exercise/aop/MethodCounter.java
Neue Datei @@ -0,0 +1,27 @@ package de.gedoplan.seminar.sbt.di.exercise.aop; import org.springframework.stereotype.Component; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import java.util.concurrent.atomic.LongAdder; import java.util.stream.Collectors; @Component public class MethodCounter { private ConcurrentMap<String, LongAdder> methodCounts = new ConcurrentHashMap<>(); protected void increase(String methodName) { methodCounts.computeIfAbsent(methodName,s -> new LongAdder()) .increment(); } public Map<String,Long> getMethodCounts() { return methodCounts.entrySet().stream() .collect(Collectors.toMap(Map.Entry::getKey,e -> e.getValue().longValue())); } } src/main/java/de/gedoplan/seminar/sbt/di/exercise/rest/MethodCountResource.java
Neue Datei @@ -0,0 +1,24 @@ package de.gedoplan.seminar.sbt.di.exercise.rest; import de.gedoplan.seminar.sbt.di.exercise.aop.MethodCounter; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.Map; @RestController @RequestMapping("methodCount") public class MethodCountResource { private final MethodCounter methodCounter; public MethodCountResource(MethodCounter methodCounter) { this.methodCounter = methodCounter; } @GetMapping public Map<String, Long> getMethodCounts() { return methodCounter.getMethodCounts(); } }