Al iniciar jugar un poco con la materia de proxy automático de la primavera, a menudo se encuentra con este comportamiento tal como se documenta:La localización de la causa de la primavera de "no es elegible para auto-proxy"
Las clases que implementan la interfaz BeanPostProcessor son especial, y por lo que se tratan diferente por el recipiente. Todos BeanPostProcessors y sus directamente granos de referencia se creará una instancia en el arranque, como parte de la fase especial inicio de la Application Context, entonces todos esos BeanPostProcessors serán registrados de una manera ordenada - y se aplican a todos los granos más . Desde AOP auto-proxy se implementa como un BeanPostProcessor sí mismo, no hay BeanPostProcessors o directamente granos de referencia son elegibles para auto-proxy (y por lo tanto no tendrá aspectos 'tejidas' en ellos.
Para cualquier tales frijol, debería ver un mensaje de registro Info: “ 'foo' bean no es elegible para obtener procesados por todos BeanPostProcessors (por ejemplo: no elegibles para auto-proxy)”.
En otras palabras, si escribo mi propia BeanPostProcessor, y que clase de referencias directamente otros granos en el contexto, a continuación, los granos que se hace referencia no será elegible para auto-proxy, y se registra un mensaje a tal efecto.
Mi problema es que rastrear cuando dicha referencia directa es puede ser muy difícil, ya que la "referencia directa" puede ser en realidad una cadena de dependencias transitivas que acaba de tomar en la mitad de los granos en el contexto de aplicación. Todo lo que Spring le ofrece es ese mensaje de información único, y no es de mucha ayuda, más allá de decirle cuándo se ha atrapado un frijol en esta red de referencias.
El BeanPostProcessor estoy desarrollando tiene referencias directas a otros granos, pero es un conjunto muy limitado de referencias. A pesar de ello, casi todos los frijoles en mi contexto y luego se excluye de esto proxy automático, de acuerdo con los mensajes de registro, pero no puedo ver dónde que la dependencia está sucediendo.
Alguien ha encontrado una mejor forma de seguimiento de esto abajo?
También puede obtener ese mensaje de información para las clases 'PersistenceExceptionTranslator'. – Raedwald