需求
现在有一些老旧项目需要迁移,针对其中某些方法需要做重定向,例如:
- 项目中大量使用
Class.getResourceAsStream(String)方法 - 项目中大量继承了某个类
OldParent
由于这些老旧项目通过动态加载的方式运行,那么能否有方法,在运行期间(不是编译期间)达到这样的目的:
- 拦截所有
Class.getResourceAsStream(String)方法调用,由另一个方法提供返回值 - 所有继承
OldParent类的改成继承NewParent,NewParent继承自OldParent
尝试
尝试过采用 Spring AOP,第一个需求由于无法预知旧项目的Class对象类型,无法拦截。 即项目中可能通过各种Class对象,例如:
Class.class.getResourceAsStream(...); String.class.getResourceAsStream(...); "".getClass().getResourceAsStream(...); this.getClass().getResourceAsStream(...); 至于第二个需求点,表示完全没有思路,目前在翻看 javassist 文档,不知道是否有解决方案。
环境限定
JDK 1.7
