
springboot 注入为null的解决
二代逻辑流 调用 外部接口的时候没判断环境
第一次使用构造注入@Environment
发现注入为null
然后使用@PostConstruct
和@Autowired
发现都没用
眉头一紧,觉得事情没那么简单
后来才去看代码,发现RestApi.java
是他每一次使用的时候 new 出来的,这对Spring来说不是Spring容器里的一个对象,自然是不受spring的管理,Environment
是通过spring注入到容器里的,所以注入不到,所以就是null
解决:
新写一个工具类,实现接口ApplicationContextAware
,手动获取
@Component
public class EnvUtil implements ApplicationContextAware {
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(@NotNull ApplicationContext applicationContext) throws BeansException {
if (EnvUtil.applicationContext == null) {
EnvUtil.applicationContext = applicationContext;
}
}
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
public static boolean isSys() {
Environment env = getApplicationContext().getBean(Environment.class);
return env.getProperty("rc.system") != null && env.getProperty("rc.system").equals("sys");
}
}
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 Henry's Lib
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果