== aspects that do not fire ==

{
    "5-self-invocation": {
        "beanIsProxied": true,
        "result": "outer -> inner",
        "innerAdvisedWhenCalledFromOuter": false,
        "innerAdvisedWhenCalledDirectly": true
    },
    "6-created-with-new": {
        "isProxy": false,
        "adviceFired": false
    },
    "4-final-method": {
        "beanIsProxied": true,
        "proxyKind": "CGLIB subclass",
        "adviceFired": false
    },
    "1-aspect-without-component-fired": false,
    "2-pointcut-typo-fired": false,
    "3-private-method-fired": false,
    "note": "every value above should be false except the two that prove the method is advisable when reached through the proxy"
}

Reading it:

  1 @Aspect without @Component  - the class is never instantiated, so the pointcut
                                  is never registered. No warning is produced.
  2 pointcut typo               - 'com.ankurm.aop.services' (plural) parses fine and
                                  matches nothing. An empty match set is not an error.
  3 private method              - cannot be overridden, so cannot be intercepted.
  4 final method                - CGLIB subclasses; a final method is inherited, not
                                  overridden. Note beanIsProxied is still true.
  5 self-invocation             - innerAdvisedWhenCalledFromOuter is false and
                                  innerAdvisedWhenCalledDirectly is true. Same method,
                                  same advice: only the call path differs.
  6 created with new            - no container, no proxy, no advice.
