我一直在阅读,当你要求在bean中注入依赖项时,你会向该资源的实例注入一个代理。我相信我知道代理是什么,它是一个知道如何将消息转发到另一个实例的实例。它还声明,正是这种模式允许容器为这个托管bean提供服务。
我不太了解这一点。为什么需要代理?这是如何实现的?每个bean都有一个代理对象吗?或者我有很多代理转发到一个实例?或者两者都不是?
另外,根据GoF的书籍设计模式,我读过你必须提供一个充当占位符的代理类。但我从来没有在Java EE中这样做,应用服务器是否在运行时创建代理类?
答案 0 :(得分:5)
代理模式背后的基本假设是,您不必从“用户”的角度来关注它。代理伪装成声明的类型,并且行为方式相同。增加的值来自代理在转发或返回对目标实例的调用之前或之后所执行的操作。这就是例如事务和安全性在容器中实现。
至于增加的问题:是的,应用程序服务器在必要时创建这些代理类。