问题标签 [dynamic-proxy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
11899 浏览

java - 具体类的动态代理

我想在 Java 程序中定义一个方法拦截器,换句话说,我想有一个在每个方法调用时执行的行为。此应用程序不在应用程序服务器中执行,因此我不能在调用拦截器周围使用 EJB。我在标准 Java 库中找到了一个不错的代理API,但它很有限,因为它在创建代理时需要一个接口:

是否有类似的 API 不会强制将 Foo.class 声明为接口?

0 投票
5 回答
812 浏览

java - Java Annotation and Processor 将方法标记为可以调用一次且只能调用一次?

我需要能够标记方法,以便它们在被多次调用时抛出 RuntimeException。

我正在尝试强制执行一些单一的赋值语义,并且我的类的参数数量太大而无法放入单个构造函数中,我需要能够让这些类JAXB也知道,所以对象需要是可变的,但我想要强制执行单一赋值语义。

我很确定我可以用 Aspects 做到这一点,但我真的希望能够使用我自己的 Annotations 处理器来代替。

我知道如何在 Python 中使用装饰器来做到这一点。

如何编写一个注释处理器,它可以在运行时拦截对注释方法的调用,而不仅仅是在编译时?

我想我正在使用动态代理拦截方法调用,我只需要弄清楚如何将它们与我的注释处理器集成。

动态代理要求您使用接口,这很麻烦,我现在有一个CGLib MethodInterceptor工作,对拦截和装饰的要求要少得多,但会增加依赖项。

0 投票
0 回答
820 浏览

hibernate - 带有动态代理的杰克逊 JSON

我有一个类,我试图用 Jackson 序列化它,它被包装在一个动态代理中,该代理执行 Hibernate 方法验证。让杰克逊忽略我的方法验证代理的最佳方法是什么?

0 投票
3 回答
914 浏览

c# - 现有对象实例上的鸭子类型/动态代理

我有一个对象交给我们的图书馆并通过了各种流程。当这些对象通过各个阶段并从另一端出来时,我需要为它们附加一些额外的信息——我猜这是一种动态装饰器模式,除了添加额外的属性而不是改变现有的行为。

我希望使用 LinFu 或 Castle 来创建动态代理并在对象上实现一个附加接口来存储它。知道扩展接口的组件可以转换和访问它 - 而那些不被遗忘的组件,因为底层类型没有改变。

但是,我没有意识到所有这些机制都假设您可以控制最初创建类型的点 - 我没有。

有人对我如何更好地解决这个问题有建议吗?

非常感谢

0 投票
1 回答
10978 浏览

proxy - Jetty 的 ProxyServlet.Transparent 类的使用示例

我正在尝试使用 jetty7 构建透明代理设置。想法是将源服务器隐藏在码头服务器后面,以便可以将传入的请求以透明的方式转发到源服务器。

我想知道我是否可以使用码头的 ProxyServlet.Transparent 实现来做到这一点。如果是的话,谁能给我一些例子。

0 投票
1 回答
359 浏览

.net - EF4.1、POCOS、动态代理和集合

是否有任何特殊原因将项目添加到 EF4.1 集合、将其保存到数据库然后再次选择该集合会产生奇怪的结果?

当我进行初始加载时,集合中的所有项目都是 type System.Data.Entity.DynamicProxies.MyClassName_LongString,因此集合上的以下选择有效:

是的,集合中总有一个项目满足该标准。总是。

但是,如果我选择集合,向其中添加新项目,保存更改,然后在同一上下文中再次选择集合,集合中的最后一项(新的)不是动态代理,而是我的 POCO 类型 ( Moo.Model.MyClassName)。

在该版本的集合上从上面执行相同的选择会引发空引用异常 - 即使最后一项(非动态代理项)确实符合标准,我已经通过手动观看集合来确认...

更改后从另一个上下文加载集合,并且行为不会自行显示 - 它们都是动态代理,并且选择有效。

有谁知道是什么导致了这种行为?

0 投票
2 回答
1077 浏览

java - 是否可以在 Java 中为枚举创建动态代理?

我是对的,不可能将动态代理与 java 枚举一起使用吗?

提前致谢。

0 投票
0 回答
788 浏览

spring - struts2 - 没有 struts2-spring 插件的 spring 集成

我想知道如何在 不使用 struts-spring 插件的情况下将spring bean( PersonService)对象分配给setPersonService方法,当我尝试跟踪动作类方法(setPersonService)时,我得到了JdkDynamicAopProxy关键字。但我对JdkDynamicAopProxy没有任何想法

Struts 动作

Struts 配置

春豆

弹簧配置

0 投票
3 回答
3789 浏览

c# - 当关注点不是横切时,Castle Project 的 DynamicProxy 如何使代码更易于维护?

不确定我是否正确命名它(即嵌套接口实现)。但是我不明白使用动态代理而不是嵌套接口实现的好处。动态代理比执行下面的示例代码更好吗?以下示例代码在某种程度上是否比 DynamicProxy 中使用的拦截器模式更具限制性?

更新 我了解什么是横切关注点以及 DynamicProxy 如何使维护这些情况更容易。诸如记录异常之类的事情与正在执行的实际代码正在做什么无关。这个例子在本质上并不像日志例子那样通用。吃饼干就是吃饼干的方式。它不应该关心你什么时候应该吃它。一个不太人为的例子是一个查询服务,它确定它是否应该调用一个使用本地存储的实现,或者调用一个为特定查询进行网络调用的实现。基于它是否在总线上收到一条消息,用于本地存储中包含的项目更新。在这种情况下使用 DynamicProxy 拦截器如何有利于代码维护?

0 投票
3 回答
6157 浏览

spring - 在spring批处理框架中,'lazy-init=true'和'scope=step'有什么区别?

当我用 'scope=step' 定义一个 'MethodInvokingFactory' bean 时,我收到一个错误,即无法确定 bean 的类型。当我将 'scope=step' 替换为 'lazy-init=true' 时,它运行良好。据我所知,两者都用于bean的后期绑定,除了一个区别。这两种方式之间还有其他区别吗?另外,我的用法正确吗?

请让我知道您对此的看法。