【问题标题】:modifying the Javassist proxy naming policy修改 Javassist 代理命名策略
【发布时间】:2013-11-13 03:04:20
【问题描述】:

使用 Enhancer 在 CGLib 中创建代理时,您可以调用 .setNamingPolicy(NamingPolicy n) 将代理类命名策略更改为 CGLib 默认值以外的策略。使用 ProxyFactory 时有什么方法可以在 Javassist 中做类似的事情吗?

【问题讨论】:

    标签: java proxy javassist cglib


    【解决方案1】:

    查看ProxyFactory 的代码,我想说至少开箱即用是不可能的:

    private static synchronized String makeProxyName(String classname) {
        return classname + "_$$_javassist_" + counter++;
    }
    

    【讨论】:

    • 所以调用静态makeProxyName的方法是private void allocateClassName() { classname = makeProxyName(basename);也许我可以代理 ProxyFactory 本身,用根据我想要的策略构建类名的东西来替换 allocateClassName 功能。我只是想快速拼凑一些东西,但没有奏效。你怎么看?
    • 它是开源的。实现此功能并提出补丁?
    • 也许我会自己做@kevinwelker :)
    • 我不是在和你竞争,所以如果你这样做了,请随时在此处发布更新:-)
    【解决方案2】:

    在 GitHub 上,看起来大约 6 个月前他们 added a public field in ProxyFactory 类型为 UniqueName,您可以替换它以更改命名策略。首次提出问题时,此功能不可用。

    【讨论】:

      猜你喜欢
      • 2017-01-02
      • 2023-04-09
      • 2016-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      相关资源
      最近更新 更多