在spring框架中使用代理(动态代理)是什么意思?

Lin*_*inh 18 java spring dynamic-proxy

我不知道在春天使用代理的意义.什么是有效的?

Boz*_*zho 52

代理由AOP使用.简而言之:

通常你有.

Caller --> Real object
Run Code Online (Sandbox Code Playgroud)

但是,例如,当您想要自动事务管理时,spring会为您的真实对象设置代理

Caller --> Proxy --> Real object
Run Code Online (Sandbox Code Playgroud)

代理启动事务的位置.

这篇文章很好地解释了代理的本质及其在春天的效率(性能)

  • Bozho,这是一个非常好的解释. (7认同)

Tho*_*ung 19

动态代理是JDK的一个特点.它可以用于使用调用处理程序实现接口.

动态代理类(下面简称为代理类)是一个类,它实现在创建类时在运行时指定的接口列表,其行为如下所述.代理接口就是由代理类实现的接口.代理实例是代理类的实例.每个代理实例都有一个关联的调用处理程序对象,该对象实现了InvocationHandler接口.

动态代理有一些开销.但是,对于大多数用例,开销不会很大.真正的问题是动态代理的(过度)使用使得应用程序更难理解和调试.例如,动态代理将在堆栈跟踪中显示多个行.

动态代理通常用于实现装饰器.其中一个例子是Spring的AOP.(我不想深入了解AOP的细节,也不会使用AOP术语来保持简单).某些问题在一个类别中实施并在许多地方使用.动态代理(和调用处理程序)只是用于拦截方法调用的粘合代码(由Spring提供).(实际上,动态代理只是此功能的一个实现细节.动态生成类是实现它的另一种可能性.)