Java SpringCore如何利用SpringAOP?

Java SpringCore如何利用SpringAOP?,java,spring,spring-boot,Java,Spring,Spring Boot,我试图了解什么是SpringAOP以及它是如何工作的。我无法回答的问题如下: 与AspectJ相比,SpringAOP没有被使用的原因之一是SpringAOP不能向任何不是由SpringFactory创建的东西添加方面。这是什么意思?不是所有的东西都是从弹簧工厂创造出来的吗 SpringCore如何“幕后”使用SpringAOP模块 什么是“SpringAOP是基于代理的” 您应该阅读此内容以进行比较https://stackoverflow.com/questions/1606559/spri

我试图了解什么是SpringAOP以及它是如何工作的。我无法回答的问题如下:

  • 与AspectJ相比,SpringAOP没有被使用的原因之一是SpringAOP不能向任何不是由SpringFactory创建的东西添加方面。这是什么意思?不是所有的东西都是从弹簧工厂创造出来的吗
  • SpringCore如何“幕后”使用SpringAOP模块
  • 什么是“SpringAOP是基于代理的”

  • 您应该阅读此内容以进行比较
    https://stackoverflow.com/questions/1606559/spring-aop-vs-aspectj&ved=2ahUKEwim6cD24-DoAhVMzaQKHd4SDfMQFjAMegQICRAB&usg=AOvVaw1Sps\u B0sPQPKRD5N9UtOpA&cshid=158662128032

    与AspectJ相比,SpringAOP没有被使用的原因之一是 SpringAOP不能向任何未创建的对象添加方面 在弹簧厂附近。这是什么意思?不是所有的东西都被创造出来了吗 从弹簧厂来的

    简而言之,Spring为容器中的bean构建代理,并依赖这些代理来实现AOP

    关于与AspectJ的比较:

    从Spring.io参考文档中:

    "

    因此,例如,Spring框架的AOP功能通常与Spring IoC容器一起使用。这是与其他AOP实现的一个关键区别。使用Spring AOP无法轻松有效地完成某些事情,例如建议非常细粒度的对象(通常是域对象).AspectJ是这种情况下的最佳选择。然而,我们的经验是,Spring AOP为企业Java应用程序中的大多数问题提供了一个非常好的解决方案,这些问题都适用于AOP

    Spring AOP从不努力与AspectJ竞争以提供全面的AOP解决方案。我们相信,基于代理的框架(如Spring AOP)和成熟的框架(如AspectJ)都是有价值的,它们是互补的,而不是竞争。Spring将Spring AOP和IoC与AspectJ无缝集成,以使所有在一致的基于Spring的应用程序体系结构中使用AOP。此集成不会影响Spring AOP API或AOP联盟API。Spring AOP保持向后兼容。有关Spring AOP API的讨论,请参阅以下章节。”

    什么是“SpringAOP是基于代理的”? SpringCore如何“幕后”使用SpringAOP模块

    基于代理的意思是,bean被包装在另一个对象(代理)中,它接受对obejct的调用,并且可以在对包装的对象调用实际方法之前对该拦截进行操作

    有两种实现方法,一种是使用java Dynamic Proxys(反射),另一种是使用CGLIB,一个在字节码级别添加代理功能的库



    基本上它使用Java反射,这是自JDK 1.0以来的老技术之一。要了解更多信息,可以参考ClassLoader——这应该是一个注释。非常感谢!