Spring更改cglib

时间:2016-01-20 22:58:11

标签: java spring aop spring-aop cglib

我在我的应用程序中使用Spring,当我们有一些没有实现任何接口的类时,Spring将使用“cglib”代理。

我可以在Spring中将cglib更改为其他lib吗?如果是,我该怎么办?

谢谢!

[编辑] 嗨,我很想要,因为我在使用CGLIB时遇到PermGen问题,当我进行hotdeploy时,proxys实例没有清理。 是的,我可以改变其他stretegy,Aspect等...

1 个答案:

答案 0 :(得分:2)

Spring仅支持 JDK(仅接口)基于CGLIB (用于类)代理,虽然未明确提及,但它也使用 Objenesis 使用CGLIB代理类 no default constructor 。另请参阅https://jira.spring.io/browse/SPR-8190https://jira.spring.io/browse/SPR-5654上与此相关的问题,以供进一步参考。这意味着Spring中有没有直接替换或配置选项来切换到其他代理创建方法。

如果您仍然愿意探索未知领域,DefaultAopProxyFactory可能是一个很好的起点,因为它似乎是Spring中代理创建代码的核心部分,代理创建者类将其用作工厂通过他们共同的超类ProxyCreatorSupport