在Spring框架中使用代理(动态代理)的含义是什么?
2022-09-01 13:36:33
我不知道在春天使用代理的含义。什么是高效?
动态代理是 JDK 的一项功能。它可用于通过调用处理程序实现接口。
动态代理类(下面简称为代理类)是一个类,它实现在创建类时在运行时指定的接口列表,其行为如下所述。代理接口就是这样一个由代理类实现的接口。代理实例是代理类的实例。每个代理实例都有一个关联的调用处理程序对象,该对象实现接口 InvocationHandler。
动态代理有一些开销。但是,对于大多数用例,开销不会很大。真正的问题是(过度)使用动态代理会使应用程序更难理解和调试。例如,动态代理将在堆栈跟踪中显示多行。
动态代理通常用于实现装饰器。这方面的一个例子是春季的AOP。(我不想深入探讨AOP的细节,也不会使用AOP术语来保持简单)。某些关注点在一个类中实现并在许多地方使用。动态代理(和调用处理程序)只是用于拦截方法调用的粘合代码(由Spring提供)。(实际上,动态代理只是此功能的实现细节。动态生成类是实现它的另一种可能性。