2

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

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

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

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

4

1 回答 1

0

您可以尝试PriorityOrdered在您的设备BeanFactoryPostProcessor上实现以实现类似于PropertyPlaceholderConfigurer在其他 bean 之前调用的效果(以便它可以加载并提供可在 bean 定义中使用的属性。

查看PropertyPlaceholderConfigurer要重用的模式。

于 2013-08-16T10:52:32.090 回答