我在我的应用程序中使用Spring,当我们有一些没有实现任何接口的类时,Spring将使用“cglib”代理。
我可以在Spring中将cglib更改为其他lib吗?如果是,我该怎么办?
谢谢!
[编辑] 嗨,我很想要,因为我在使用CGLIB时遇到PermGen问题,当我进行hotdeploy时,proxys实例没有清理。 是的,我可以改变其他stretegy,Aspect等...
答案 0 :(得分:2)
Spring仅支持 JDK(仅接口)和基于CGLIB (用于类)代理,虽然未明确提及,但它也使用 Objenesis 使用CGLIB代理类 no default constructor 。另请参阅https://jira.spring.io/browse/SPR-8190和https://jira.spring.io/browse/SPR-5654上与此相关的问题,以供进一步参考。这意味着Spring中有没有直接替换或配置选项来切换到其他代理创建方法。
如果您仍然愿意探索未知领域,DefaultAopProxyFactory
可能是一个很好的起点,因为它似乎是Spring中代理创建代码的核心部分,代理创建者类将其用作工厂通过他们共同的超类ProxyCreatorSupport
。