2012-02-13 71 views
0

使用增强器在CGLib中创建代理时,可以调用.setNamingPolicy(NamingPolicy n)将代理类命名策略更改为CGLib默认设置以外的其他策略。使用ProxyFactory时,有没有办法在Javassist中执行类似的操作?修改Javassist代理命名策略

回答

2

看着为ProxyFactory的代码,我会说这是不可能出的现成至少:

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

所以调用静态makeProxyName的方法是 private void allocateClassName() {name} = makeProxyName(basename); } 也许我可以代理ProxyFactory本身,用根据我想要的策略构建类名称的东西替换allocateClassName功能。我只是试图快速拼凑一些东西,但没有奏效。你怎么看? – 2012-02-14 04:15:48

+0

它是开源的。实施此功能并提出补丁? – 2012-02-14 05:43:07

+0

可能是我自己做的@kevinwelker :) – 2012-02-14 19:49:21

0

在GitHub上,它看起来像大约6个月前,他们类型UniqueName的added a public field in ProxyFactory那您可以更换以更改命名策略。当问题首次被问到时,这是不可用的。