### What the container injected for GreetingService
class       = com.ankurm.filteraop.service.GreetingService$$SpringCGLIB$$N
isAopProxy  = true
isCglib     = true

### GET /api/hello/ankur  (a normal call from the controller: the service aspect fires for greet)
HTTP 200  body=Hello, ankur
06 REQUEST  aspect:controller              before HelloController#hello args=[ankur]
07 REQUEST  controller                     hello(ankur)
08 REQUEST  aspect:service                 before GreetingService#greet args=[ankur]
09 REQUEST  aspect:service                 after  GreetingService#greet returned=Hello, ankur
10 REQUEST  aspect:controller              after  HelloController#hello returned=Hello, ankur (String)

### GET /api/twice/ankur  (self-invocation: greetTwice calls this.greet() twice)
HTTP 200  body=Hello, ankur / Hello, ankur
06 REQUEST  aspect:controller              before HelloController#twice args=[ankur]
07 REQUEST  aspect:service                 before GreetingService#greetTwice args=[ankur]
08 REQUEST  aspect:service                 after  GreetingService#greetTwice returned=Hello, ankur / Hello, ankur
09 REQUEST  aspect:controller              after  HelloController#twice returned=Hello, ankur / Hello, ankur (String)

### GET /api/twice-fixed/ankur  (the fix: FixedGreetingService calls greet() through an injected @Lazy reference to itself)
HTTP 200  body=Hello, ankur / Hello, ankur
06 REQUEST  aspect:controller              before HelloController#twiceFixed args=[ankur]
07 REQUEST  aspect:service                 before FixedGreetingService#greetTwice args=[ankur]
08 REQUEST  aspect:service                 before FixedGreetingService#greet args=[ankur]
09 REQUEST  aspect:service                 after  FixedGreetingService#greet returned=Hello, ankur
10 REQUEST  aspect:service                 before FixedGreetingService#greet args=[ankur]
11 REQUEST  aspect:service                 after  FixedGreetingService#greet returned=Hello, ankur
12 REQUEST  aspect:service                 after  FixedGreetingService#greetTwice returned=Hello, ankur / Hello, ankur
13 REQUEST  aspect:controller              after  HelloController#twiceFixed returned=Hello, ankur / Hello, ankur (String)

### GET /api/private/ankur  (callsPrivate calls a private method)
HTTP 200  body=secret-ankur
06 REQUEST  aspect:controller              before HelloController#privateCall args=[ankur]
07 REQUEST  aspect:service                 before GreetingService#callsPrivate args=[ankur]
08 REQUEST  aspect:service                 after  GreetingService#callsPrivate returned=secret-ankur
09 REQUEST  aspect:controller              after  HelloController#privateCall returned=secret-ankur (String)

### GET /api/helper/ankur  (usesHelper calls new Helper().shout(...))
HTTP 200  body=ANKUR!
06 REQUEST  aspect:controller              before HelloController#helper args=[ankur]
07 REQUEST  aspect:service                 before GreetingService#usesHelper args=[ankur]
08 REQUEST  aspect:service                 after  GreetingService#usesHelper returned=ANKUR!
09 REQUEST  aspect:controller              after  HelloController#helper returned=ANKUR! (String)

### Direct call on the proxy outside any web request: service.greetTwice("direct")
01 -        aspect:service                 before GreetingService#greetTwice args=[direct]
02 -        aspect:service                 after  GreetingService#greetTwice returned=Hello, direct / Hello, direct
