揭穿神话:代理影响性能
在最近的一篇博客文章中,Marc Logemann 谈到了代理性能的主题。在他的文章中,他要求“Spring 开发者”提供一份白皮书。我不想花费大量篇幅讨论代理和字节码织入机制之间精确到纳秒的差异,但我确实认为重申这些差异以及这种讨论是否重要是有价值的。
什么是代理以及我们为什么使用它们?
让我们首先简要回顾一下代理的用途(通常以及在 Spring 中)。根据 GoF(Gang of Four)关于 设计模式 的书,代理是另一个对象的替身或占位符,用于控制对其的访问。因为代理位于对象的调用者和实际对象之间,所以它可以决定阻止实际(或目标)对象被调用,或者在目标对象被调用之前做一些事情。
换句话说,代理可以用作真实对象的替身,以对这些对象应用额外的行为——无论是与安全相关的行为、缓存还是性能测量……
