AspectJ Spring AOP切入点hibernate实体函数

时间:2017-11-25 07:51:01

标签: entity aop aspectj spring-aop hibernate-entitymanager

如何切入Hibernate实体中定义的函数的执行,这些函数不是作为spring bean创建或加载的。无法通过互联网找到任何有关如何执行此操作的帮助。

有没有办法使用spring to point cut hibernate实体。

This is what I found, but no solution

1 个答案:

答案 0 :(得分:0)

使用Spring AOP,你无法做到。 Spring AOP是一种有限的AOP解决方案,与AspectJ只有类似。 Spring AOP在很多方面都不如AspectJ:

  • Spring AOP仅支持AspectJ切入点的有限子集(仅限切入点的执行类型)
  • Spring AOP与AspectJ相比具有不同的语义,因为它使用动态代理而不是直接字节码操作。使用Spring AOP使用的基于代理的解决方案,当控制流没有离开代理对象时,不会执行建议,就像调用同一对象中的另一个方法一样,如this.someOtherMethod()
  • Spring AOP仅适用于Spring托管bean。 Hibernate实体不是Spring托管bean,因此Spring AOP不适用于它们。

我鼓励您切换到本机AspectJ,以便能够建议Hibernate entites或任何其他非Spring管理bean。 Spring很好地支持AspectJ,您应该能够更改配置以使用原生AspectJ而不是Spring AOP。