问题标签 [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 投票
0 回答
798 浏览

spring - How to use Dynamic Proxies with JSF when the method signature contains Object ... args

I'm having some trouble with Spring, JPA and Dynamic Proxy DAO classes which are initialized as Spring Beans. This particular project has been plaguing me on the persistence/transaction side for some time, and I'd like to get this nailed down once and for all.

First, here's a method from the DAO interface:

This bean is registered automatically with Spring using a postProcessBeanFactory method:

The method getPersistedClassList() reads persistence.xml and finds all of the JPA classes. The above method registers each of these instances with Spring so they can be accessed easily by the variable "entityNameDao". Because this class is a transactional class, it gets initialized as a Dynamic Java Proxy, and that's where my problems begin. JSF doesn't perceive the object by its interfaces anymore, but looks directly at the proxy, which does in fact show the above method definition as:

This makes it much more difficult to access from JSF than an Object... params signature method. Is there any way I can get JSF to recognize these objects by their interface, or convince Spring to somehow not make dynamic proxies of them? Alternatively, how does one go about doing the following in EL, it gives me errors about the curly braces if I try:

My spring config relating to persistence, including the transaction advice is included below for good measure.

0 投票
1 回答
1651 浏览

java - 动态代理 - 创建新代理实例时的类加载器参数

我想知道当您在创建动态代理实例时调用该newProxyInstance方法时,参数究竟是什么ClassLoader

非常感谢!

PS我不确定如何正确使用代码格式化标签。

0 投票
1 回答
1431 浏览

java - spring 范围代理和 JAXB

JAXBContext 是线程安全的,但 Unmarshaller 不是。我想让解组器成为请求范围 bean,我正在这样做:

但问题是我收到以下错误:

创建代理时无法确定目标类型

我已经阅读了带有 AOP 的 Spring session scope bean 中的问题,这表明我应该告诉 spring 更多关于我想要创建的类型,但是要创建的类型是一个接口。我是否应该寻找将基于 JAXB 实现实例化的实际类型,并使 unmarshaller bean 的类属性指向它?似乎有点奇怪。线索?

编辑:

好吧我的错。这实际上有效,只是在我的单元测试中失败了。春季测试中的请求范围 bean很有帮助。

0 投票
2 回答
2926 浏览

performance - Autofac:使用 DynamicProxy 时提高性能的技巧?

我今天才开始使用 DynamicProxy2。并发现它导致性能显着下降。

请参阅下面的代码。Test1 比 Test2 慢 10 倍。

使用 DynamicProxy 时提高性能的任何提示?

更新:

在我的机器上,Test1 大约需要 45 秒,Test2 大约需要 4.5 秒。阅读Krzysztof Koźmic的回答后,我尝试将NotifyPropertyChangedInterceptor放入单例范围:

这为我节省了大约 4 秒。现在 Test1 大约需要 41 秒。

更新 2:

Test3 在我的机器上大约需要 8.3 秒。所以看起来单独使用 Autofac 或 DynamicProxy 性能不是一个很大的问题(在我的项目中),但是将它们组合在一起会导致性能大幅下降。

0 投票
2 回答
3332 浏览

c# - 来自 WSDL 的详细服务描述/代理

我正在使用类 ServiceDescription / ServiceDescriptionImporter 来动态调用 Web 服务。我想更深入地研究 WSDL 描述并获得

1) 每个网络方法的参数信息

2)所有Web方法的实际类型/组成每个参数(即,如果WebMethod采用某些复杂类型作为参数,我需要知道它所组成的原始/其他类型,如果可能的话)

这是我用于动态调用的代码:

我已经能够找到一些基本信息,例如方法名称、参数信息,但我需要更深入的分析。例如,我需要访问 Wsdl.exe 在代理类中生成的基本上所有信息,但我不想运行 Wsdl.exe,只需动态发现这些信息。对于每个方法,我需要知道它的返回类型是由什么组成的,它的参数是由什么组成的,等等。我知道它在 WSDL 中,只是不确定如何以编程方式提取它。以下是我一直在探索的一些课程:

似乎很多都是空的?

提前致谢。

编辑

我更进一步,这是我试图遍历的 xml 模式(WSDL):

这是要遍历的代码:

这让我更进一步,但还没有得到 ComplexType 的 complexContent。在控制台中产生以下输出:

会话会话

0 投票
2 回答
977 浏览

c# - .net 动态代理的成本

使用动态代理的成本是多少?

我不想用接口实现使我的项目混乱,所以我正在考虑使用由一些 3rd 方库(如 LinFu、Castle、Unity 等)创建的动态代理。它们是为每个接口生成一个实例,还是每次调用都得到一个实例。

它是一个网络应用程序,所以从长远来看,性能问题是什么。

我也在使用 EF 4.1(目前是 CTP5),所以如果确实创建了代理类本身,这让我想知道我是否可以使用 EF 自己的动态代理创建工具。

PS是的,我的接口是由具体类以及其他接口和基类实现的,但有时我只需要它的接口部分,而不需要具体类附带的额外内容。

所有接口仅声明 EF4.1 POCO 的一部分。所以只是吸气剂和二传手。

0 投票
2 回答
820 浏览

.net - 使用 AOP 技术拦截 ADO.Net

我有相当大的代码库,使用各种不同的 ADO 技术(即一些 EF,在某些情况下直接使用 ADO.Net)。

我想知道是否有任何方法可以全局拦截任何 ADO.Net 调用,以便我可以开始审计信息,例如执行的确切 SQL 语句、花费的时间、返回的结果等。

主要思想是,如果我能做到这一点,我不应该更改任何现有代码,并且我应该能够拦截/包装 ADO.Net... 这可能吗?

编辑

有人建议我查看PostSharpCciSharpAfterthought,但是如何使用其中之一来获得所需的结果?

0 投票
2 回答
687 浏览

java - 将动态代理应用于应用程序中的所有类

我想将我创建的动态代理应用到属于我的应用程序的所有类。但是,我也希望能够使用依赖注入(Spring)而不是编写类似 MyDynamicProxy.newInstance(new Account()); 的东西。

newInstance 在哪里:

如何将依赖注入和动态代理应用于我的应用程序中的所有类?

0 投票
1 回答
757 浏览

c# - 基于反射的注入与动态代理:实际考虑?

我正在编写一些框架式代码,旨在执行大量操作(数十万),所有这些都使用相同的基本组件,但需要从外部源接受特定于操作的配置数据。

目前假设有一个配置库,给定适当的设置名称列表,它知道如何有效地加载这些设置并将它们存储在如下类型中:

我打算做的是实现一些流畅的映射语法,或者只是用如下属性装饰组件类:

你得到了图片......希望。需要注意的是,有些属性实际上需要保存存储库,因此传统的 DI 库在这里不起作用;即使他们这样做了,它们也是钝器,并非旨在旋转数十万个组件并加载/保存数百万个属性。换句话说,我不认为我在重新发明轮子,但如果有人想说服我不这样做,请随意。

无论如何,我正在考虑两种可能的选项来处理将配置数据“注入”到这些组件实例中:

  1. Plain vanilla Reflection - 扫描配置属性的类型并将成员信息(连同配置键)保存在静态字典中。然后使用反射方法,例如PropertyInfo.SetValuePropertyInfo.GetValue进行注入和提取(因为没有更好的术语)。这类似于大多数 DI 库使用的方法。

  2. 使用动态代理(如 Castle)并将拦截器连接到修饰属性,这样它们不会引用私有/自动生成的字段,而是引用IConfiguration实例(即get方法调用IConfiguration.Getset方法调用IConfiguration.Set)。这类似于 NHibernate 和其他 ORM 使用的方法。

完整的实现可能最终会成为相当多的工作,所以我不想在意识到我错过了什么之前走得太远

所以我的问题是,这两种方法的优缺点是什么,我需要避免哪些陷阱? 我从性能、可维护性、防白痴等方面考虑。

或者,是否有其他更快的途径来实现这个目标,最好是没有陡峭的学习曲线?

0 投票
1 回答
298 浏览

java - 如何获取接口数组(动态代理)

我对动态代理很困惑。我知道我需要一个具有 interfaceArray 变量的 ProxyCreator 类。我只是不确定如何创建一个界面 arrau。另外,我能否简单解释一下如何进行动态代理。再次感谢!