title: Tracking down cause of Spring's "not eligible for auto-proxying"
body: <p>When you start messing around with Spring's auto-proxy stuff, you often run into this behaviour as documented:</p>
  
  <blockquote>
    <p>Classes that implement the
    BeanPostProcessor  interface are
    special, and so they are treated
    differently by the container. All
    BeanPostProcessors  and their directly
    referenced beans will be instantiated
    on startup, as part of the special
    startup phase of the
    ApplicationContext, then  all those
    BeanPostProcessors will be registered
    in a sorted fashion - and applied to
    all further beans. Since AOP
    auto-proxying is implemented as a
    BeanPostProcessor  itself, no
    BeanPostProcessors or directly
    referenced beans are eligible for
    auto-proxying (and thus will not have
    aspects 'woven' into them.</p>
    
    <p>For any such bean, you should see an
    info log message: “Bean 'foo' is not
    eligible for getting processed by all
    BeanPostProcessors (for example: not
    eligible for auto-proxying)”.</p>
  </blockquote>
  
  <p>In other words, if I write my own BeanPostProcessor, and that class directly references other beans in the context, then those referenced beans will not be eligible for auto-proxying, and a message is logged to that effect.</p>
  
  <p>My problem is that tracking down where that direct reference is can be very difficult, since the "direct reference" can in fact be a chain of transitive dependencies that ends up taking in half the beans in the application context. All Spring gives you is that single info message, and it's not really much help, beyond telling you when a bean has been caught in this web of references.</p>
  
  <p>The BeanPostProcessor I'm developing does have direct references to other beans, but it's a very limited set of references. Despite this, pretty much every bean in my context is then being excluded from being auto-proxied, according to the log messages, but I can't see where that dependency is happening.</p>
  
  <p>Has anyone found a better way of tracking this down? </p>