Skip to content

Commit fe3b773

Browse files
committed
Added performance trace for quickstart using aop
1 parent bed7cf9 commit fe3b773

File tree

4 files changed

+51
-0
lines changed

4 files changed

+51
-0
lines changed

quick-start/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ dependencies {
4242
exclude group: 'com.google.guava', module: 'guava'
4343
}
4444
compile 'com.google.guava:guava:19.0'
45+
compile 'org.springframework.boot:spring-boot-starter-aop:1.3.3.RELEASE'
4546

4647
providedRuntime('org.springframework.boot:spring-boot-starter-tomcat')
4748
testCompile('junit:junit')
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package com.marklogic.hub.service;
2+
3+
import org.aspectj.lang.ProceedingJoinPoint;
4+
import org.aspectj.lang.annotation.Aspect;
5+
import org.aspectj.lang.annotation.Around;
6+
import org.slf4j.Logger;
7+
import org.slf4j.LoggerFactory;
8+
import org.springframework.stereotype.Component;
9+
import org.springframework.util.StopWatch;
10+
11+
@Aspect
12+
@Component
13+
public class AspectLoggerService {
14+
15+
private final static Logger LOGGER = LoggerFactory.getLogger(AspectLoggerService.class);
16+
17+
@Around("execution(* com.marklogic.hub..*.*(..))")
18+
public Object logTimeInsideMethod(ProceedingJoinPoint joinPoint) throws Throwable {
19+
StopWatch stopWatch = new StopWatch();
20+
stopWatch.start();
21+
Object retVal = joinPoint.proceed();
22+
stopWatch.stop();
23+
24+
StringBuilder logMessage = new StringBuilder();
25+
logMessage.append(joinPoint.getTarget().getClass().getName());
26+
logMessage.append(".");
27+
logMessage.append(joinPoint.getSignature().getName());
28+
logMessage.append("(");
29+
// append args
30+
Object[] args = joinPoint.getArgs();
31+
for (int i = 0; i < args.length; i++) {
32+
logMessage.append(args[i]).append(",");
33+
}
34+
if (args.length > 0) {
35+
logMessage.deleteCharAt(logMessage.length() - 1);
36+
}
37+
logMessage.append(")");
38+
logMessage.append(" took ");
39+
logMessage.append(stopWatch.getTotalTimeMillis());
40+
logMessage.append(" ms");
41+
LOGGER.info(logMessage.toString());
42+
return retVal;
43+
44+
}
45+
}

quick-start/src/main/java/com/marklogic/hub/service/FileSystemEventListener.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
import java.nio.file.Path;
44
import java.nio.file.WatchEvent;
55

6+
import org.springframework.stereotype.Component;
7+
8+
@Component
69
public interface FileSystemEventListener {
710

811
void onWatchEvent(Path path, WatchEvent<Path> event);

quick-start/src/main/java/com/marklogic/hub/web/controller/api/EntityApiController.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import org.springframework.beans.factory.DisposableBean;
1111
import org.springframework.beans.factory.InitializingBean;
1212
import org.springframework.beans.factory.annotation.Autowired;
13+
import org.springframework.context.annotation.EnableAspectJAutoProxy;
1314
import org.springframework.context.annotation.Scope;
1415
import org.springframework.http.MediaType;
1516
import org.springframework.validation.BindingResult;
@@ -32,6 +33,7 @@
3233
@RestController
3334
@RequestMapping("/api/entities")
3435
@Scope("session")
36+
@EnableAspectJAutoProxy(proxyTargetClass = true)
3537
public class EntityApiController implements InitializingBean, DisposableBean, FileSystemEventListener {
3638

3739
@Autowired

0 commit comments

Comments
 (0)