是否可以通过挂钩到bean定义来更改类?

时间:2013-08-16 09:26:07

标签: java spring javassist

我喜欢使用javassist更改Web应用程序中的第三方类。当org.springframework.web.context.ContextLoaderListener调用spring Web应用程序上下文初始化时,将加载该类。我尝试了一个自定义BeanFactoryPostProcessor,但似乎太晚了:

javassist.CannotCompileException: by java.lang.LinkageError: loader ... duplicate class definition for name: "SomeClass"

我想可以通过在初始化bean之前用自定义更改类来替换ContextLoaderListener来完成。如果可能的话,我宁愿不接触web.xml。

因此,我的问题是是否有一种方法可以注册在任何bean定义类加载之前执行的回调。

1 个答案:

答案 0 :(得分:0)

您可以尝试在PriorityOrdered上实现BeanFactoryPostProcessor,以获得与其他bean之前调用的PropertyPlaceholderConfigurer类似的效果(以便它可以加载并使其可用,属性为可以在bean定义中使用。

查看要重用的模式的PropertyPlaceholderConfigurer