java - 是否可以通过 Hook bean 定义来更改类?

标签 java spring javassist

我喜欢使用 javassist 更改网络应用程序中的第 3 方类。该类在 org.springframework.web.context.ContextLoaderListener 调用 spring web 应用程序上下文初始化时加载。我尝试了自定义 BeanFactoryPostProcessor 但它似乎启动得太晚了:

javassist.CannotCompileException: by java.lang.LinkageError: loader ... 名称的重复类定义:“SomeClass”

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

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

最佳答案

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

查看 PropertyPlaceholderConfigurer 以获取可重用的模式。

关于java - 是否可以通过 Hook bean 定义来更改类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18270059/

相关文章:

java - Spring Boot : configure Sqlite database

java - 字节码操作能否在运行时更改 Java 方法的返回类型?

java - 如何断言SpringFramework的org.springframework.http.ResponseEntity类设置的 "Content-Type"?

从 Java 9 开始,javassist.NotFoundException

java - 如何在Java中使用泛型摆脱通配符返回类型?

java - 创建 Java 代理 MITM

java - Sonar Web Service API,按开发者过滤数据

java - "The constructor is undefined "错误

java - Spring 或 App-Server escape html 无法正常工作 JAVA MVC

java - 使用纯 JPA 和 Spring 在 View 中打开 session - 而不是 Hibernate session