当前位置: 首页 > 面试题库 >

具体类的动态代理

慕阳伯
2023-03-14
问题内容

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

 Foo f = (Foo) Proxy.newProxyInstance(Foo.class.getClassLoader(),
                                      new Class[] { Foo.class },
                                      handler);

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


问题答案:

为什么不使用CGLIB?有关更多信息,请参见本文。

如果要代理没有接口的旧类怎么办?您可以使用CGLIB。CGLIB是功能强大的高性能代码生成库。在幕后,它使用ASM(一种小型但快速的字节码操作框架)来转换现有的字节码以生成新的类。CGLIB比JDK动态代理方法快。本质上,它动态生成一个子类以覆盖代理类的非最终方法,并连接调用用户定义的拦截器的钩子。



 类似资料:
  • 本文向大家介绍spring如何动态指定具体实现类,包括了spring如何动态指定具体实现类的使用技巧和注意事项,需要的朋友参考一下 在写接口实现时,有时会有多个实现类。这篇文章介绍在调用时通过传入字符串来指定具体的实现类。 一.接口与实现类: 在实现类中重写了toString() 方法,可以自定义字符串,当调用时传入指定的字符串就能获取到相应的bean。  二.register书写: 三.测试类:

  • 问题内容: 据我所知,创建一个动态Java代理需要一个接口来处理该代理。但是,Hibernate似乎可以管理其动态代理生成,而无需为实体类提供一个写接口。它是如何做到的?Hibernate文档的唯一线索是这样的事实,即类必须至少具有一个包可见的构造函数才能生成代理。 Hibernate是否使用自定义类加载器进行运行时字节码工程设计?该文档表明情况并非如此。那么他们如何围绕具体实体对象创建代理包装器

  • 我们有许多Jetty超文本传输协议服务器,都位于不同的防火墙后面。超文本传输协议服务器位于客户站点(不受我们的控制)。在这些站点的防火墙中打开端口不是一个选项。目前,这些服务器仅提供JSON文档以响应REST请求。 我们有Web客户端需要根据URL参数或标头值与给定的超文本传输协议服务器交互。 这似乎是一种简单的代理服务器情况——除了防火墙。 我目前正在尝试的方法是: 有一个集中式代理服务器(也基

  • 问题内容: 我正在尝试找到一种优雅的方法来创建一个自定义的 body标签 动态类,该类可以从中轻松设置,如果未设置,则可以使用默认选项或不使用。 例: routes.js 简单标记HTML 场景: 1 -参观 登录 我应该有 一流 的身体等于 2-此时访问 寄存器 ,它将具有相同的类 3-访问 个人资料* ,身体将具有 默认 类别或 没有 默认 类别 * 您如何实现的? 问题答案: 您可以拥有一个

  • 我有以下Jackson注释类(Kotlin) 我试图反序列化不包含类型属性的JSON,但我提供了具体的类,所以这无关紧要 无论如何,当尝试解析...的子类型时,我得到

  • 我有这个代码: 我试过这个: 但不管用。这是一个例外: