Java “这对”意味着什么;代理一个bean;?
在工作和网上,我不断听到有关企业Java开发的术语“代理”。例如,使用以下短语: 本模块执行以下操作: 创建包含带注释的方法的度量和代理bean @计时、计量、例外和计数[强调我的] 我不熟悉Java框架和库生态系统中的许多语言。我觉得我对bean有很好的理解,但我仍然不清楚如何代理beanJava “这对”意味着什么;代理一个bean;?,java,spring,proxy,Java,Spring,Proxy,在工作和网上,我不断听到有关企业Java开发的术语“代理”。例如,使用以下短语: 本模块执行以下操作: 创建包含带注释的方法的度量和代理bean @计时、计量、例外和计数[强调我的] 我不熟悉Java框架和库生态系统中的许多语言。我觉得我对bean有很好的理解,但我仍然不清楚如何代理bean 代理bean意味着什么?一些框架依赖于一种称为插装(instrumentation)的机制,简言之,这意味着为给定的已编译字节码构建代理,在我们认为有用的某些地方向其添加一些代码。这将实现多种任务,例如,在
代理bean意味着什么?一些框架依赖于一种称为插装(instrumentation)的机制,简言之,这意味着为给定的已编译字节码构建代理,在我们认为有用的某些地方向其添加一些代码。这将实现多种任务,例如,在它们之间向Springbean添加一种分析,正如该库所声称的那样 Spring引擎返回它提供的每个托管bean的大量检测代理——例如,通过这种方式,您可以使用Spring声明性事务处理。您将编写没有实际连接处理的“naive”DAO,以及使用没有实际事务处理的DAO的“naive”服务类-插入指令的代理将包括带有连接实例化、提交、回滚的样板代码
我希望这会有所帮助通常情况下,你有一个像豆子一样的
Bean bean = new Bean(); // actually created by the context
有了它,您可以做Bean
类声明为行为的任何事情(调用其方法)
有时候,如果您可以跟踪方法调用所需的时间,那就太好了
你可以
long start = .. // get start time
bean.invoke();
long end = .. // get end time
// end - start
但对每个方法调用都这样做很糟糕。因此,像这样的模式、架构和样式是存在的
与上面的Bean
不同,您需要
Bean bean = new TimingBean(new Bean()); // again done by the context
其中,TimingBean
是一种代理类型,它扩展并实现了Bean
扩展并实现的所有类型。出于所有意图和目的,它是一个Bean
,但在将每个调用委托给Bean
对象之前,它添加了一系列额外的行为。在本例中,它将跟踪Bean
的每个方法执行所需的时间
基本Spring使用和。这里有一些
它使用这个作为它的目标。它用它来做广告。它用它来做广告。它甚至使用它来进行代理。代理意味着您的客户机代码认为它在与一个bean通信,但代理实际上在监听和响应 自早期的分布式客户机/服务器计算模型(如CORBA)以来,情况就是如此。客户机将与接口类型进行交互,就好像它存在于其内存空间中一样,但他们实际上是在与代理进行交互,代理将处理有关将请求数据编组为请求、通过网络与服务器上运行的远程对象通信以及将响应解组回客户机的所有混乱细节 Spring将此模型用于远程处理。它还构成了面向方面编程模型的基础。您的代码认为它正在处理特定的接口;Spring可以在该实例之前、之后或周围嵌入建议,并代表您执行横切操作,如日志记录、事务管理等