背景
最近遇到了一个比较罕见的bug,灰度上线的机器在监控平台打的点应用名和方法名都是null,排查了一番,发现新增的A类调用了监控打点的切面B类的静态方法,而在Spring加载Bean的时候,先加载了A类的Bean,使得B类中需要Spring注入的被@Value修饰的应用名和方法名属性都没有注入成功。
A类
@Component
public class A{
public void xxx(){
//用B类打点
B.registerInfo('A.xxx');
}
}
B类
@Service('b')
public class B{
private static String sAppName;
private static String sMethodName;
@Value("my_app")
public void setAppName(String appName){
sAppName = appName;
}