- 静态方法中调用静态变量,出现空指针异常
@Component
public class Mq {
private static String namesrvAddr;
private static String version;
public static DefaultMQPushConsumer getConsumer() {
version.replace(".", "_"); // 空指针异常
}
@Autowired
public void setValue(@Value("${rocketmq.name-server}") String tempNamesrvAddr,
@Value("${spring.cloud.nacos.discovery.metadata.version}") String tempVersion) {
namesrvAddr = tempNamesrvAddr;
version = tempVersion;
}
@Component
@Slf4j
public class Consumer {
@Resource
private IService service;
@PostConstruct
private void init() {
consumer();
}
private void consumer() {
Mq.getConsumer();
}
}
解决办法:
在Consumer上加上:
@DependsOn(“mq”)
@DependsOn注解可以定义在类和方法上,【被依赖的组件会比该组件先注册到IOC容器中】。