我不知道在Spring中使用代理的意义是什么,它是否高效?
我不知道在Spring中使用代理的意义是什么,它是否高效?
动态代理是JDK的一个特性。可以使用调用处理程序来实现接口。
动态代理类(以下简称代理类)是一个在创建该类时在运行时指定一系列接口,按照下面描述的方式实现行为的类。代理接口是由代理类实现的这样一个接口。代理实例是代理类的一个实例。每个代理实例都有一个关联的调用处理程序对象,它实现了接口InvocationHandler。
动态代理具有一些开销。对于大多数用例,开销不会很高。真正的问题是过度使用动态代理会使应用程序更难以理解和调试。例如,动态代理将在堆栈跟踪中显示多行。
动态代理通常用于实现装饰器。其中一个例子是Spring中的AOP。(我不想深入讨论AOP的细节,并且不会使用AOP术语来保持简单)。某些关注点在一个类中实现并在多个地方使用。动态代理(和调用处理程序)只是拦截方法调用的粘合代码(由Spring提供)。 (实际上,动态代理仅是此功能的实现细节。生成类是另一种实现它的可能性。)