使用场景
在某些复杂场景下,我们需要对运行在tomcat容器中部分功能进行mock(替换其实现),但该部分功能散落在各处,我们希望不修改源代码以非侵入的方式来实现Mock,在这种情况下,我们可以应用Javassist来实现。
使用Javassist来动态Mock
我们可以定义一个ContextListener的实例,在tomcat启动时通过Javassist对源代码进行动态替换,来实现mock的功能。
使用Javassist在tomcat容器中动态替换源码来实现动态Mock:
以下是示例代码片段:
package test;
import lombok.extern.log4j.Log4j2;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import java.util.HashMap;
import java.util.Map;
import org.lightfw.utilx.dynamic.JavassistUtil;