相关疑难解决方法(0)

为什么自调用不适用于 Spring 代理(例如使用 AOP)?

请解释一下,为什么在目标上执行代理上的自调用而不是代理?如果是故意的,那又是为什么呢?如果通过子类创建代理,则可以在每次方法调用之前执行一些代码,即使在自调用时也是如此。我试过了,我有自我调用的代理

public class DummyPrinter {
    public void print1() {
        System.out.println("print1");
    }

    public void print2() {
        System.out.println("print2");
    }

    public void printBoth() {
        print1();
        print2();
    }
}
Run Code Online (Sandbox Code Playgroud)
public class PrinterProxy extends DummyPrinter {
    @Override
    public void print1() {
        System.out.println("Before print1");
        super.print1();
    }

    @Override
    public void print2() {
        System.out.println("Before print2");
        super.print2();
    }

    @Override
    public void printBoth() {
        System.out.println("Before print both");
        super.printBoth();
    }
}
Run Code Online (Sandbox Code Playgroud)
public class Main {
    public static void main(String[] args) {
        DummyPrinter p = new PrinterProxy();
        p.printBoth();
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

Before …
Run Code Online (Sandbox Code Playgroud)

proxy spring spring-aop

7
推荐指数
1
解决办法
2180
查看次数

Spring中是否为每个Bean创建一个代理?

所以,我在网上阅读,你不能将配置定为最终的,因为 CGLIB 扩展了类来创建代理。但是,我正在阅读 @Scope 的文档,默认的 proxyMethod 值是不创建代理(链接在这里 - https://docs.spring.io/springframework/docs/current/javadoc-api/org/springframework/ context/annotation/Scope.html)。

所以,我的主要问题是,是否为每个 @Configuration 创建一个代理?

java aop spring spring-aop spring-boot

3
推荐指数
1
解决办法
1831
查看次数

标签 统计

spring ×2

spring-aop ×2

aop ×1

java ×1

proxy ×1

spring-boot ×1